Game Development Community

Error! ProcessEvent is NOT reentrant.

by Lowell Duke · in iTorque 2D · 08/19/2010 (2:24 am) · 1 replies

Hi, I have an intermittent bug that is very scary. From looking at the code where this assert is generated, I can tell it's event related. I'm using schedule events to do incremental stuff (very fast ones at 17ms apart theoretically although I doubt it's that fast), then at the end when I reach a terminal condition I call an iPhone assert with an "OK". I do this in lots of places..even use alertOKCancel with no problems. However, in this particular spot, I happen to get this assert. And, well I only got this assert until I added an echo command in front of the last schedule :O ..so there's a scary timing issue here that I'm hoping someone can shed some light on. I'm going to re-arrange my schedule logic to produce less events, but I'm worried that 1) it won't fix it and 2) it'll come back when timing changes. All I can tell at this point is that if I don't call alert, I don't have a problem.

Anyway, anyone more familiar with the processevent function care to shed some light? Thanks.I'm gonna refactor a little bit for the next 10 minutes. I'll be up.

Here's is a snipped of my console. Thanks guys.

Loaded compiled script /private/var/mobile/Applications/C6261EAC-42DE-4E35-85FC-59F52CFF6886/AFX Paint.app/game/data/levels/emptyLevel.t2d. Took 313 ms
oniPhoneBecomeActive: Unknown command.
newOrientation: Landscape Left (Home Button on the right)
!!!!!!!!!!!!! ---------------

Fatal: (/Applications/iT2D_1_4_Beta/MyProjects/Test/buildFiles/XCode_iPhone/../../../../engine/source/platform/gameInterface.cc @ 79) Error! ProcessEvent is NOT reentrant.
fDEBUG_BREAK!
Fatal: (/Applications/iT2D_1_4_Beta/MyProjects/Test/buildFiles/XCode_iPhone/../../../../engine/source/platform/gameInterface.cc @ 79) Error! ProcessEvent is NOT reentrant.
fDEBUG_BREAK!
Fatal: (/Applications/iT2D_1_4_Beta/MyProjects/Test/buildFiles/XCode_iPhone/../../../../engine/source/platform/gameInterface.cc @ 79) Error! ProcessEvent is NOT reentrant.
fDEBUG_BREAK!

...... MANY REPEATS .......



kill
quit

#1
08/19/2010 (2:46 am)
Hmm I see Sven's post about the iPhoneTextEntry runloop. My callstack shows the same thing. NSRunLoop for the alert box causes it to go back into ProcessEvent eventually ... after some weeds I see it come into CA::Display::DisplayLink::dispatch then into the runMainLoop->_iPhoneGameInnerLoop->DemoGame::mainLoop->GameInterface::processEvents.

Hmmm...