Darkstalkers Chronicle: The Chaos Tower
|
01-07-2014, 02:11 AM
Post: #17
|
|||
|
|||
RE: Darkstalkers Chronicle The Chaos Tower
So suddenly it's at 50? Hmm. Oh wait.
326=sceKernelCreateThread(name=Task Level0, entry=0885575c, prio=32, stacksize=12288) sceKernelStartThread(thread=326, argSize=0, argPtr=00000000) Unable to remove thread 326 from queue 50 - was not there <-- I thought this was wrong but it isn't, 0x32 = 50. ... sceKernelChangeThreadPriority(326, 63) <-- at this point it should be 63 no matter what. Unable to remove thread 326 from queue 63 - was not there <-- okay, good ... Unable to remove thread 326 from queue 63 - was not there <-- okay, still fine sceKernelTerminateThread(326) Unable to remove thread 326 from queue 50 - was not there <-- what this means is that initPriority was 50 Kernel: Bad object handle 326 (00000146) ACK ACK ACK ACK Invalid thread id 326 on thread queue <-- so then, where is it on the queue? I'm guessing it must somehow have managed to get back onto the queue somewhere, but not sure how? This calls for more drastic changes. Change __KernelNextThread() to: Code: Thread *__KernelNextThread() { And then, change these: Code: inline SceUID pop_first() To: Code: inline SceUID pop_first(u32 &popped_priority) This should identify which queue priority level the thread id came from (it'll be slower but won't matter much on desktop.) If it's 50 or 63, then I guess somehow it's being added back to the queue somewhere after being terminated? If it's something else... then gotta figure out when it's added to that level. -[Unknown] |
|||
« Next Oldest | Next Newest »
|