View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0000371||Gameplay + OpenGL||[All Projects] Bug||public||2017-03-02 19:23||2017-03-03 12:12|
|Priority||normal||Severity||minor||Reproducibility||have not tried|
|Summary||0000371: "attempt to save pointer to unhandled type" does not go to fullscreen console|
|Description||What the summary said. Yes, I actually maanged to trigger this to happen while experimenting with a post-death exit restore system using global variable approved thinkers (see Nash's thread) somehow, but instead of going to console, it just prints a big fat text on the screen and freezes the game up.|
|Tags||No tags attached.|
I figured out how to reproduce the effect and I know what causes it.
Load the test file and start a new game. Then do ChangeMap to another map, can be any. Bam. Instant freeze after the melting screen is gone.
What causes it?
At the top of the ZScript file, you'll see there's a CVar type object defined. If you comment that out, it won't freeze anymore. Also, the cvar test is not invoked at all -- there's no calls to it, or anything.
test.pk3 (2,386 bytes)
FYI, the problem is that any variable in a serialized class muxt be a serializable type or be declared transient. I guess this will require a compile time check at least for all subclasses of Thinker which have to be fully serializable.
But that's for later. I think fixing the freeze is the more important issue for now.
Agreed. I don't see any harm requiring the transient flag for now, as we can store the results straight to string/float/color/ints easily enough.
My lame attempt to fix the freeze was to add I_FreezeTime(false); line to D_ErrorCleanup() function. Although it won't fly because I_FreezeTime() calls must be balanced.
Found no way to do so with the existing interface. Platform specific backend needs to report time frozen state somehow. Or probably we should remove the balance requirement.
|This cannot fall through to D_ErrorCleanup. It must be caught at a higher level so that proper cleanup of the serializer can be done.|
|2017-03-02 19:23||Major Cooke||New Issue|
|2017-03-02 20:17||Major Cooke||File Added: test.pk3|
|2017-03-02 20:17||Major Cooke||Note Added: 0000843|
|2017-03-03 08:16||Graf Zahl||Note Added: 0000844|
|2017-03-03 08:17||Major Cooke||Note Added: 0000845|
|2017-03-03 08:18||Major Cooke||Note Edited: 0000845||View Revisions|
|2017-03-03 08:19||Major Cooke||Note Edited: 0000845||View Revisions|
|2017-03-03 10:11||_mental_||Note Added: 0000846|
|2017-03-03 11:30||Graf Zahl||Note Added: 0000849|
|2017-03-03 12:12||Graf Zahl||Status||new => resolved|
|2017-03-03 12:12||Graf Zahl||Resolution||open => fixed|