
Sample letter requesting financial assistance for school Thankfully, there is a container which allows for random access and guarantees reference stability when growing - std::deque.RPC3 is the first functional working PS3 emulator. Looking at the code, it seems like Sections needs to allow for random access so std::list is out of the question. To solve this, we either need stability of references or we need to stop assuming elements cannot move. Problems arise when one of the functions called by that function and processRelocationRef is a very, very long function! While this is a problem with any vector-like type, SmallVector concealed the problem by preallocating 64 entries, so in most cases it never reallocates! Sadly, it also seems to have hidden a major bug. In this case, it seems like most instances of Sections stored less than 64 entries, and so this optimization was made to reduce computation cost because of less frequent reallocations. Sections is a member of class RuntimeDyldImpldefined as.


However, what is Section and why is it freed? RuntimeDyldImpl::processRelocationRef provides an answer. When running Debug builds, freed memory is filled with DDh. Sure enough, not only the call stack is more detailed, but this time it also has source information retained. Trying again with a debugger attached, results could be observed quickly - crashing always with the same call stack. The only variable K was affected by was CPU affinity - I could reduce the likelihood of a crash by messing with it, but that seemed counter-intuitive - after all, X has more cores and thus threadsso reducing them should have been unrelated.Īnd yet…. Sadly, neither got me any closer to the root cause - X still would not crash, whereas K would refuse to work even if I tried to transfer the cache. Even worse, I seem to be alone with this issue - other users testing the same game did not have such issues. This takes a while, but later saves CPU time when actually playing - nice.

If you are not here for the backstory, scroll down to A deeper dive into the code section.
