Dink HD 1.7.4 Beta Report - Initiation
Cast Awakening Part 1: Initiation
1) It looks like the pure black pixels on the title screen (and, more noticeably, on the screen that appears when clicking 'Start') are white:
Dink HD:
v1.08:
Dink HD:
v1.08:
1) Fixed!
2) Experienced a crash in 1.7.3. This happened shortly after switching to full-screen mode, and I think I may have been casting a spell or punching something around the time it happened:
Here is an excerpt from log.txt:
Killing script Seten-pill, owner sprite 6 is dead.
Loading map 204...
Drawing hard map..
Procedure sp_touch_damage does not take 1 parms in p-fart, offset 152. ();
?)
Player now owns this item.
Preloading ice
Loading map 205...
Loading map 212...
Loading map 220...
DINK CRASHED! STACK TRACE BELOW
---------------------------------------------------------
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D7DC50)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D7DC50)
00D7DC50 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D915A0)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D915A0)
00D915A0 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D979A1)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D979A1)
00D979A1 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D8A6BF)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D8A6BF)
00D8A6BF (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D9497A)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D9497A)
00D9497A (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D86885)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D86885)
00D86885 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D7B1BB)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D7B1BB)
00D7B1BB (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D96F71)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D96F71)
00D96F71 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DAF9F0)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DAF9F0)
00DAF9F0 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D0365C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D0365C)
00D0365C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DA9426)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DA9426)
00DA9426 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D4FE4D)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D4FE4D)
00D4FE4D (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D14E9E)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D14E9E)
00D14E9E (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D2022C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D2022C)
00D2022C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D2D5F3)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D2D5F3)
00D2D5F3 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D0365C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D0365C)
00D0365C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DA9426)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DA9426)
00DA9426 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D06024)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D06024)
00D06024 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D6B5C5)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D6B5C5)
00D6B5C5 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DC7A48)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DC7A48)
00DC7A48 (dink): (filename not available): (function-name not available)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 74D38744)
74D38744 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 7756582D)
7756582D (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 775657FD)
775657FD (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
---------------------------------------------------------
2) Experienced a crash in 1.7.3. This happened shortly after switching to full-screen mode, and I think I may have been casting a spell or punching something around the time it happened:
Here is an excerpt from log.txt:
Killing script Seten-pill, owner sprite 6 is dead.
Loading map 204...
Drawing hard map..
Procedure sp_touch_damage does not take 1 parms in p-fart, offset 152. ();
?)
Player now owns this item.
Preloading ice
Loading map 205...
Loading map 212...
Loading map 220...
DINK CRASHED! STACK TRACE BELOW
---------------------------------------------------------
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D7DC50)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D7DC50)
00D7DC50 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D915A0)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D915A0)
00D915A0 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D979A1)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D979A1)
00D979A1 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D8A6BF)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D8A6BF)
00D8A6BF (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D9497A)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D9497A)
00D9497A (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D86885)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D86885)
00D86885 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D7B1BB)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D7B1BB)
00D7B1BB (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D96F71)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D96F71)
00D96F71 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DAF9F0)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DAF9F0)
00DAF9F0 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D0365C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D0365C)
00D0365C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DA9426)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DA9426)
00DA9426 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D4FE4D)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D4FE4D)
00D4FE4D (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D14E9E)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D14E9E)
00D14E9E (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D2022C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D2022C)
00D2022C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D2D5F3)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D2D5F3)
00D2D5F3 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D0365C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D0365C)
00D0365C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DA9426)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DA9426)
00DA9426 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D06024)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D06024)
00D06024 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00D6B5C5)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00D6B5C5)
00D6B5C5 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00DC7A48)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00DC7A48)
00DC7A48 (dink): (filename not available): (function-name not available)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 74D38744)
74D38744 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 7756582D)
7756582D (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 775657FD)
775657FD (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
---------------------------------------------------------
I think I can reproduce the problem: load this continue state, and hold the shift key.
http://www.redrecondite.com/dinkhd/DinkHD1.7.3_initiationcrash.zip
http://www.redrecondite.com/dinkhd/DinkHD1.7.3_initiationcrash.zip
Hi Dan!
So, there is a thing with Lost in Dink with Dink HD. Dinkcraft menu has a graphical glitch in the menu and in the movement of troll. Similar to the menu glitch is also in the ending of Coconut Monkeys. You might be better to figure out the cause of the problem.
Also, I discovered an exploit in Dink Smallwood Goes Trick-Or-Treating while testing. You can actually get candy at one house, go to another screen, then get back the inhabitants will give you candy again with the same costume.
So, there is a thing with Lost in Dink with Dink HD. Dinkcraft menu has a graphical glitch in the menu and in the movement of troll. Similar to the menu glitch is also in the ending of Coconut Monkeys. You might be better to figure out the cause of the problem.
Also, I discovered an exploit in Dink Smallwood Goes Trick-Or-Treating while testing. You can actually get candy at one house, go to another screen, then get back the inhabitants will give you candy again with the same costume.
Thanks, that save state was very helpful. Yeah, the crash happens when the magic hits the rock, the rock tries to ask the missile sprite what its script is, but the script doesn't exist, but the sprite doesn't know that and tries to access a null pointer.
I fixed it so it won't crash. (will be in 1.74) From the save state I saved at the "strange machine", carried that save to Dink 1.08 and verified it also did crash with that, so the memory access error was also in the original.
I also found the underlying engine bug that causes it in the first place but I'm afraid to fix it so leaving it commented out for now.
/*
//NOTE: This would fix a bug where a script doesn't properly remove itself from an owner sprite but.. could cause behavior differences so not enabling it for now
if (g_scriptInstance[k]->sprite > 0 && g_scriptInstance[k]->sprite < C_MAX_SPRITES_AT_ONCE)
{
if (g_sprite[g_scriptInstance[k]->sprite].active && g_sprite[g_scriptInstance[k]->sprite].script == k)
{
//um.. guess we should tell the sprite it no longer has an associated script, right?!
g_sprite[g_scriptInstance[k]->sprite].script = 0;
}
}
*/
I fixed it so it won't crash. (will be in 1.74) From the save state I saved at the "strange machine", carried that save to Dink 1.08 and verified it also did crash with that, so the memory access error was also in the original.
I also found the underlying engine bug that causes it in the first place but I'm afraid to fix it so leaving it commented out for now.
/*
//NOTE: This would fix a bug where a script doesn't properly remove itself from an owner sprite but.. could cause behavior differences so not enabling it for now
if (g_scriptInstance[k]->sprite > 0 && g_scriptInstance[k]->sprite < C_MAX_SPRITES_AT_ONCE)
{
if (g_sprite[g_scriptInstance[k]->sprite].active && g_sprite[g_scriptInstance[k]->sprite].script == k)
{
//um.. guess we should tell the sprite it no longer has an associated script, right?!
g_sprite[g_scriptInstance[k]->sprite].script = 0;
}
}
*/
Huh, on a side note, I wonder why you aren't getting proper stack information written to the log.txt after the crash. I had a crash with the retail build and it DID properly write function names in the info. I'm using Win 10. Dan, what version of Windows are you running?
That's weird; I'm running Windows 10 Pro, Version 1703, OS Build 15063.540
Found a crash in 1.7.4. Does not seem to crash in 1.08 / freedink. I also saw this in 1.7.3, but I wasn't sure if it was a duplicate of the other crash I reported.
Here's the log (no useful stack trace that I can tell, again):
Loading C:\Users\Dan\AppData\Local\DinkSmallwoodHD\
Playing music 202.mid
Loading map 104...
Procedure external does not take 3 parms in death, offset 952. ();
?)
Processing playmidi command.
Loading C:\Users\Dan\AppData\Local\DinkSmallwoodHD\
Playing music 406.mid
Procedure external does not take 2 parms in death, offset 1458. ();
?)
Procedure external does not take 3 parms in death, offset 11275. ();
?)
Processing playmidi command.
Playing music 202.mid
Loading map 105...
Procedure rand does not take 2 parms in torch, offset 305. ();
?)
ERROR: Procedure void E(&MYX, &MYY, 6, 502, 1);
( void ); not found in script . (word 2 was torch)
DINK CRASHED! STACK TRACE BELOW
---------------------------------------------------------
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ACE769)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ACE769)
00ACE769 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ACE73D)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ACE73D)
00ACE73D (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00AD0D2A)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00AD0D2A)
00AD0D2A (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ACC16B)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ACC16B)
00ACC16B (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00AE7BE1)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00AE7BE1)
00AE7BE1 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00B00110)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00B00110)
00B00110 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A5358C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A5358C)
00A5358C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A55E66)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A55E66)
00A55E66 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00AA074D)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00AA074D)
00AA074D (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A64ACE)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A64ACE)
00A64ACE (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A6FFFC)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A6FFFC)
00A6FFFC (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A79973)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A79973)
00A79973 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A5358C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A5358C)
00A5358C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A55E66)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A55E66)
00A55E66 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A56184)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A56184)
00A56184 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ABBCF5)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ABBCF5)
00ABBCF5 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00B18178)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00B18178)
00B18178 (dink): (filename not available): (function-name not available)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 74D38744)
74D38744 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 7756582D)
7756582D (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 775657FD)
775657FD (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
---------------------------------------------------------
It's weird in that I can reproduce it around 50% of the time, but I can't reproduce it with a closer continue_state.dat.
Here's my save9.dat:
initiation-hall-crash.zip
And here's a recording of where the issue is triggered:
Here's the log (no useful stack trace that I can tell, again):
Loading C:\Users\Dan\AppData\Local\DinkSmallwoodHD\
Playing music 202.mid
Loading map 104...
Procedure external does not take 3 parms in death, offset 952. ();
?)
Processing playmidi command.
Loading C:\Users\Dan\AppData\Local\DinkSmallwoodHD\
Playing music 406.mid
Procedure external does not take 2 parms in death, offset 1458. ();
?)
Procedure external does not take 3 parms in death, offset 11275. ();
?)
Processing playmidi command.
Playing music 202.mid
Loading map 105...
Procedure rand does not take 2 parms in torch, offset 305. ();
?)
ERROR: Procedure void E(&MYX, &MYY, 6, 502, 1);
( void ); not found in script . (word 2 was torch)
DINK CRASHED! STACK TRACE BELOW
---------------------------------------------------------
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ACE769)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ACE769)
00ACE769 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ACE73D)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ACE73D)
00ACE73D (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00AD0D2A)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00AD0D2A)
00AD0D2A (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ACC16B)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ACC16B)
00ACC16B (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00AE7BE1)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00AE7BE1)
00AE7BE1 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00B00110)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00B00110)
00B00110 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A5358C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A5358C)
00A5358C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A55E66)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A55E66)
00A55E66 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00AA074D)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00AA074D)
00AA074D (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A64ACE)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A64ACE)
00A64ACE (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A6FFFC)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A6FFFC)
00A6FFFC (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A79973)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A79973)
00A79973 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A5358C)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A5358C)
00A5358C (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A55E66)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A55E66)
00A55E66 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00A56184)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00A56184)
00A56184 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00ABBCF5)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00ABBCF5)
00ABBCF5 (dink): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00B18178)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00B18178)
00B18178 (dink): (filename not available): (function-name not available)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 74D38744)
74D38744 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 7756582D)
7756582D (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 775657FD)
775657FD (ntdll): (filename not available): RtlGetAppContainerNamedObjectPath
---------------------------------------------------------
It's weird in that I can reproduce it around 50% of the time, but I can't reproduce it with a closer continue_state.dat.
Here's my save9.dat:
initiation-hall-crash.zip
And here's a recording of where the issue is triggered:
Ooh, I happened to have the debugger attached, and it worked from a continue state, here's a call stack for ya:
EDIT: Actually, I think this was an unrelated assertion, sorry.
dink_debug.exe!common_assert_to_message_box(const wchar_t * const expression=0x00e4f668, const wchar_t * const file_name=0x00e4e700, const unsigned int line_number=0x00000fb1, void * const return_address=0x00c7d240) Line 351 C++ Symbols loaded.
dink_debug.exe!common_assert(const wchar_t * const expression=0x00e4f668, const wchar_t * const file_name=0x00e4e700, const unsigned int line_number=0x00000fb1, void * const return_address=0x00c7d240) Line 386 C++ Symbols loaded.
dink_debug.exe!_wassert(const wchar_t * expression=0x00e4f668, const wchar_t * file_name=0x00e4e700, unsigned int line_number=0x00000fb1) Line 404 C++ Symbols loaded.
dink_debug.exe!check_pic_status(int picID=0x00003174) Line 4017 C++ Symbols loaded.
dink_debug.exe!draw_sprite_game(IDirectDrawSurface * lpdest=0x0a697f00, int h=0x00000026) Line 5037 C++ Symbols loaded.
dink_debug.exe!ThinkSprite(int h=0x00000026, bool get_frame=false) Line 15570 C++ Symbols loaded.
dink_debug.exe!updateFrame() Line 15957 C++ Symbols loaded.
dink_debug.exe!OnGameMenuRender(VariantList * pVList=0x005cf1a0) Line 981 C++ Symbols loaded.
dink_debug.exe!boost: etail::function::void_function_invoker1::invoke(boost: etail::function::function_buffer & function_ptr={...}, VariantList * a0=0x005cf1a0) Line 118 C++ Symbols loaded.
dink_debug.exe!boost::function1: perator()(VariantList * a0=0x005cf1a0) Line 759 C++ Symbols loaded.
dink_debug.exe!boost: ignals: etail::call_bound1::caller >: perator() ignals: etail::connection_slot_pair>(const boost: ignals: etail::connection_slot_pair & slot={...}) Line 119 C++ Symbols loaded.
dink_debug.exe!boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>: ereference() Line 61 C++ Symbols loaded.
dink_debug.exe!boost::iterators::iterator_core_access: ereference ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >(const boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> & f={...}) Line 550 C++ Symbols loaded.
dink_debug.exe!boost::iterators: etail::iterator_facade_base ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>,boost: ignals: etail::unusable,boost::iterators: ingle_pass_traversal_tag,boost: ignals: etail::unusable const &,int,0,0>: perator*() Line 655 C++ Symbols loaded.
dink_debug.exe!boost::iterators: etail: ostfix_increment_proxy ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >: ostfix_increment_proxy ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >(const boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> & x={...}) Line 159 C++ Symbols loaded.
dink_debug.exe!boost::iterators: perator++ ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>,boost: ignals: etail::unusable,boost::iterators: ingle_pass_traversal_tag,boost: ignals: etail::unusable const &,int>(boost::iterators::iterator_facade ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>,boost: ignals: etail::unusable,boost::iterators: ingle_pass_traversal_tag,boost: ignals: etail::unusable const &,int> & i={...}, int __formal=0x00000000) Line 798 C++ Symbols loaded.
dink_debug.exe!boost::last_value: perator() ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >(boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> first={...}, boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> last={...}) Line 49 C++ Symbols loaded.
dink_debug.exe!boost: ignal1,int,std::less,boost::function >: perator()(VariantList * a1=0x005cf1a0) Line 342 C++ Symbols loaded.
dink_debug.exe!VariantDB::CallFunctionIfExists(const std::basic_string,std::allocator > & keyName={...}, VariantList * pVList=0x005cf1a0) Line 142 C++ Symbols loaded.
dink_debug.exe!Entity::CallFunctionRecursivelyWithUpdatedVar(const std::basic_string,std::allocator > funcName={...}, VariantList * pVList=0x005cf1a0, const std::basic_string,std::allocator > & varName={...}, int varIndex=0x00000000, Entity::eRecursiveVarOp op=RECURSIVE_VAR_OP_ADDITION_PLUS_ALIGNMENT_OFFSET, std::vector > * pEntList=0x00000000) Line 291 C++ Symbols loaded.
dink_debug.exe!FocusRenderComponent: nRender(VariantList * pVList=0x005cf1a0) Line 31 C++ Symbols loaded.
dink_debug.exe!boost::_mfi::mf1: perator()(FocusRenderComponent * p=0x0a5eef28, VariantList * a1=0x005cf1a0) Line 165 C++ Symbols loaded.
dink_debug.exe!boost::_bi::list2,boost::arg<1> >: perator(),boost::_bi::rrlist1 >(boost::_bi::type __formal={...}, boost::_mfi::mf1 & f={...}, boost::_bi::rrlist1 & a={...}, int __formal=0x00000000) Line 320 C++ Symbols loaded.
dink_debug.exe!boost::_bi::bind_t,boost::_bi::list2,boost::arg<1> > >: perator()(VariantList * && a1=0x005cf1a0) Line 1307 C++ Symbols loaded.
dink_debug.exe!boost: etail::function::void_function_obj_invoker1,boost::_bi::list2,boost::arg<1> > >,void,VariantList *>::invoke(boost: etail::function::function_buffer & function_obj_ptr={...}, VariantList * a0=0x005cf1a0) Line 160 C++ Symbols loaded.
dink_debug.exe!boost::function1: perator()(VariantList * a0=0x005cf1a0) Line 759 C++ Symbols loaded.
dink_debug.exe!boost: ignals: etail::call_bound1::caller >: perator() ignals: etail::connection_slot_pair>(const boost: ignals: etail::connection_slot_pair & slot={...}) Line 119 C++ Symbols loaded.
dink_debug.exe!boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>: ereference() Line 61 C++ Symbols loaded.
dink_debug.exe!boost::iterators::iterator_core_access: ereference ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >(const boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> & f={...}) Line 550 C++ Symbols loaded.
dink_debug.exe!boost::iterators: etail::iterator_facade_base ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>,boost: ignals: etail::unusable,boost::iterators: ingle_pass_traversal_tag,boost: ignals: etail::unusable const &,int,0,0>: perator*() Line 655 C++ Symbols loaded.
dink_debug.exe!boost::iterators: etail: ostfix_increment_proxy ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >: ostfix_increment_proxy ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >(const boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> & x={...}) Line 159 C++ Symbols loaded.
dink_debug.exe!boost::iterators: perator++ ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>,boost: ignals: etail::unusable,boost::iterators: ingle_pass_traversal_tag,boost: ignals: etail::unusable const &,int>(boost::iterators::iterator_facade ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator>,boost: ignals: etail::unusable,boost::iterators: ingle_pass_traversal_tag,boost: ignals: etail::unusable const &,int> & i={...}, int __formal=0x00000000) Line 798 C++ Symbols loaded.
dink_debug.exe!boost::last_value: perator() ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> >(boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> first={...}, boost: ignals: etail: lot_call_iterator ignals: etail::call_bound1::caller >,boost: ignals: etail::named_slot_map_iterator> last={...}) Line 49 C++ Symbols loaded.
dink_debug.exe!boost: ignal1,int,std::less,boost::function >: perator()(VariantList * a1=0x005cf1a0) Line 342 C++ Symbols loaded.
dink_debug.exe!BaseApp: raw() Line 142 C++ Symbols loaded.
dink_debug.exe!App: raw() Line 719 C++ Symbols loaded.
dink_debug.exe!WinMain(HINSTANCE__ * hInstance=0x009e0000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x0159520c, int nCmdShow=0x0000000a) Line 1795 C++ Symbols loaded.
[External Code] Annotated Frame
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] Annotated Frame
EDIT: Actually, I think this was an unrelated assertion, sorry.
dink_debug.exe!common_assert_to_message_box
dink_debug.exe!common_assert
dink_debug.exe!_wassert(const wchar_t * expression=0x00e4f668, const wchar_t * file_name=0x00e4e700, unsigned int line_number=0x00000fb1) Line 404 C++ Symbols loaded.
dink_debug.exe!check_pic_status(int picID=0x00003174) Line 4017 C++ Symbols loaded.
dink_debug.exe!draw_sprite_game(IDirectDrawSurface * lpdest=0x0a697f00, int h=0x00000026) Line 5037 C++ Symbols loaded.
dink_debug.exe!ThinkSprite(int h=0x00000026, bool get_frame=false) Line 15570 C++ Symbols loaded.
dink_debug.exe!updateFrame() Line 15957 C++ Symbols loaded.
dink_debug.exe!OnGameMenuRender(VariantList * pVList=0x005cf1a0) Line 981 C++ Symbols loaded.
dink_debug.exe!boost: etail::function::void_function_invoker1
dink_debug.exe!boost::function1
dink_debug.exe!boost: ignals: etail::call_bound1
dink_debug.exe!boost: ignals: etail: lot_call_iterator
dink_debug.exe!boost::iterators::iterator_core_access: ereference
dink_debug.exe!boost::iterators: etail::iterator_facade_base
dink_debug.exe!boost::iterators: etail: ostfix_increment_proxy
dink_debug.exe!boost::iterators: perator++
dink_debug.exe!boost::last_value
dink_debug.exe!boost: ignal1
dink_debug.exe!VariantDB::CallFunctionIfExists(const std::basic_string
dink_debug.exe!Entity::CallFunctionRecursivelyWithUpdatedVar(const std::basic_string
dink_debug.exe!FocusRenderComponent: nRender(VariantList * pVList=0x005cf1a0) Line 31 C++ Symbols loaded.
dink_debug.exe!boost::_mfi::mf1
dink_debug.exe!boost::_bi::list2
dink_debug.exe!boost::_bi::bind_t
dink_debug.exe!boost: etail::function::void_function_obj_invoker1
dink_debug.exe!boost::function1
dink_debug.exe!boost: ignals: etail::call_bound1
dink_debug.exe!boost: ignals: etail: lot_call_iterator
dink_debug.exe!boost::iterators::iterator_core_access: ereference
dink_debug.exe!boost::iterators: etail::iterator_facade_base
dink_debug.exe!boost::iterators: etail: ostfix_increment_proxy
dink_debug.exe!boost::iterators: perator++
dink_debug.exe!boost::last_value
dink_debug.exe!boost: ignal1
dink_debug.exe!BaseApp: raw() Line 142 C++ Symbols loaded.
dink_debug.exe!App: raw() Line 719 C++ Symbols loaded.
dink_debug.exe!WinMain(HINSTANCE__ * hInstance=0x009e0000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x0159520c, int nCmdShow=0x0000000a) Line 1795 C++ Symbols loaded.
[External Code] Annotated Frame
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] Annotated Frame
that's a beautiful post. keep it this way.
Thanks - using your save I figured it out.
torch.c has:
&myy = rand(1,5);
Because that's incorrect (should be random, not rand) &myy is left with a random (ha, ironic) number, depending on what's in the memory there.
If this var was -1 or more than 50, it would crash when using sp_frame(&fire, &myy) as later it tries to access that frame.
I've fixed it so sp_frame will set to 1 if an invalid # is sent to it, it also logs a clear error.
Also, I fixed other places so even if frame was set to 28738273 it will assert in debug mode but not crash in release.
(this tweak will be in 2.75)
torch.c has:
&myy = rand(1,5);
Because that's incorrect (should be random, not rand) &myy is left with a random (ha, ironic) number, depending on what's in the memory there.
If this var was -1 or more than 50, it would crash when using sp_frame(&fire, &myy) as later it tries to access that frame.
I've fixed it so sp_frame will set to 1 if an invalid # is sent to it, it also logs a clear error.
Also, I fixed other places so even if frame was set to 28738273 it will assert in debug mode but not crash in release.
(this tweak will be in 2.75)