Debugging Win32 Memory List Corruption
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next timestamp
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu and Index Controls

a
w
s
d
h j k l


Esc Close menu / unfocus timestamp

Quotes and References Menus and Index

Enter Jump to timestamp

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:09Recap and set the stage for the day
0:09Recap and set the stage for the day
0:09Recap and set the stage for the day
1:49Run the game to demo the bug with the looped live code editing, and begin investigating it
1:49Run the game to demo the bug with the looped live code editing, and begin investigating it
1:49Run the game to demo the bug with the looped live code editing, and begin investigating it
5:48win32_handmade.cpp: Walk through how PLATFORM_ALLOCATE_MEMORY(), PLATFORM_DEALLOCATE_MEMORY() and Win32FreeMemoryBlock() work
5:48win32_handmade.cpp: Walk through how PLATFORM_ALLOCATE_MEMORY(), PLATFORM_DEALLOCATE_MEMORY() and Win32FreeMemoryBlock() work
5:48win32_handmade.cpp: Walk through how PLATFORM_ALLOCATE_MEMORY(), PLATFORM_DEALLOCATE_MEMORY() and Win32FreeMemoryBlock() work
11:35Step in to Win32FreeMemoryBlock() to gauge the rarity of this bug
11:35Step in to Win32FreeMemoryBlock() to gauge the rarity of this bug
11:35Step in to Win32FreeMemoryBlock() to gauge the rarity of this bug
15:34win32_handmade.cpp: Introduce Win32VerifyMemoryListIntegrity()
15:34win32_handmade.cpp: Introduce Win32VerifyMemoryListIntegrity()
15:34win32_handmade.cpp: Introduce Win32VerifyMemoryListIntegrity()
19:11win32_handmade.cpp: Make PLATFORM_ALLOCATE_MEMORY() call Win32VerifyMemoryListIntegrity() at the end and start, run and hit the one at the start
19:11win32_handmade.cpp: Make PLATFORM_ALLOCATE_MEMORY() call Win32VerifyMemoryListIntegrity() at the end and start, run and hit the one at the start
19:11win32_handmade.cpp: Make PLATFORM_ALLOCATE_MEMORY() call Win32VerifyMemoryListIntegrity() at the end and start, run and hit the one at the start
24:59win32_handmade.cpp: Make Win32VerifyMemoryListIntegrity() increment a FailCounter, run the game and locate the failure case
🏃
24:59win32_handmade.cpp: Make Win32VerifyMemoryListIntegrity() increment a FailCounter, run the game and locate the failure case
🏃
24:59win32_handmade.cpp: Make Win32VerifyMemoryListIntegrity() increment a FailCounter, run the game and locate the failure case
🏃
28:40Step in to Win32VerifyMemoryListIntegrity() and identify who is getting written and when
28:40Step in to Win32VerifyMemoryListIntegrity() and identify who is getting written and when
28:40Step in to Win32VerifyMemoryListIntegrity() and identify who is getting written and when
30:35Set a data breakpoint on the Size, run the game and see who touched that memory location
30:35Set a data breakpoint on the Size, run the game and see who touched that memory location
30:35Set a data breakpoint on the Size, run the game and see who touched that memory location
35:58Look at where we set PushBufferBase, fix up RenderCommandsStruct() and correctly initialise the PushBuffer
35:58Look at where we set PushBufferBase, fix up RenderCommandsStruct() and correctly initialise the PushBuffer
35:58Look at where we set PushBufferBase, fix up RenderCommandsStruct() and correctly initialise the PushBuffer
38:01Run the game and find that the bug is dead
38:01Run the game and find that the bug is dead
38:01Run the game and find that the bug is dead
38:46win32_handmade.cpp: Remove the calls to Win32VerifyMemoryListIntegrity(), run the game and see that we're still okay
38:46win32_handmade.cpp: Remove the calls to Win32VerifyMemoryListIntegrity(), run the game and see that we're still okay
38:46win32_handmade.cpp: Remove the calls to Win32VerifyMemoryListIntegrity(), run the game and see that we're still okay
40:16win32_handmade.cpp: Introduce Win32GetMemoryStats() in order to initialise arenas with debug information
40:16win32_handmade.cpp: Introduce Win32GetMemoryStats() in order to initialise arenas with debug information
40:16win32_handmade.cpp: Introduce Win32GetMemoryStats() in order to initialise arenas with debug information
43:43handmade_platform.h: Introduce DEBUG_PLATFORM_GET_MEMORY_STATS()
43:43handmade_platform.h: Introduce DEBUG_PLATFORM_GET_MEMORY_STATS()
43:43handmade_platform.h: Introduce DEBUG_PLATFORM_GET_MEMORY_STATS()
46:26handmade_debug.cpp: Enable DEBUGEnd() to print the memory stats
46:26handmade_debug.cpp: Enable DEBUGEnd() to print the memory stats
46:26handmade_debug.cpp: Enable DEBUGEnd() to print the memory stats
49:28handmade_shared.h: Enable FormatStringList() to handle the l case
49:28handmade_shared.h: Enable FormatStringList() to handle the l case
49:28handmade_shared.h: Enable FormatStringList() to handle the l case
51:12Run the game and consult the profiler
51:12Run the game and consult the profiler
51:12Run the game and consult the profiler
52:39Q&A
🗩
52:39Q&A
🗩
52:39Q&A
🗩
53:29thesizik long is >= 32 bits, long long is >= 64 bits
🗪
53:29thesizik long is >= 32 bits, long long is >= 64 bits
🗪
53:29thesizik long is >= 32 bits, long long is >= 64 bits
🗪
55:00pseudonym73 Windows is LLP64, everything else is LP64. The only difference between the two is the size of long. Everything else (short, int, long long) is the same
🗪
55:00pseudonym73 Windows is LLP64, everything else is LP64. The only difference between the two is the size of long. Everything else (short, int, long long) is the same
🗪
55:00pseudonym73 Windows is LLP64, everything else is LP64. The only difference between the two is the size of long. Everything else (short, int, long long) is the same
🗪
57:35zilarrezko Is there any plan on organizing the episodes in a manner such as "Worked on mandalas on these episodes"?1
🗪
57:35zilarrezko Is there any plan on organizing the episodes in a manner such as "Worked on mandalas on these episodes"?1
🗪
57:35zilarrezko Is there any plan on organizing the episodes in a manner such as "Worked on mandalas on these episodes"?1
🗪
59:49Miblo We'll have "category tagging" in the new annotation system
🗪
59:49Miblo We'll have "category tagging" in the new annotation system
🗪
59:49Miblo We'll have "category tagging" in the new annotation system
🗪
1:00:55doritosranger Would Handmade Hero get a version for Linux or is it strictly a windows project? If it's true, why not using Linux in work? Is it personal choice or is it harder to debug something on windows?
🗪
1:00:55doritosranger Would Handmade Hero get a version for Linux or is it strictly a windows project? If it's true, why not using Linux in work? Is it personal choice or is it harder to debug something on windows?
🗪
1:00:55doritosranger Would Handmade Hero get a version for Linux or is it strictly a windows project? If it's true, why not using Linux in work? Is it personal choice or is it harder to debug something on windows?
🗪
1:04:14dudeinbasement1 Winners don't use drugs message needs to be added in the game's loading screen
🗪
1:04:14dudeinbasement1 Winners don't use drugs message needs to be added in the game's loading screen
🗪
1:04:14dudeinbasement1 Winners don't use drugs message needs to be added in the game's loading screen
🗪
1:04:30zilarrezko Seems like the questions aren't polling in... Do you usually put your rendering / updating / input processing in the same function like you have been doing?
🗪
1:04:30zilarrezko Seems like the questions aren't polling in... Do you usually put your rendering / updating / input processing in the same function like you have been doing?
🗪
1:04:30zilarrezko Seems like the questions aren't polling in... Do you usually put your rendering / updating / input processing in the same function like you have been doing?
🗪
1:05:12edvinholm Is the bending of the hero's body going to be like it is now? Looks a bit weird
🗪
1:05:12edvinholm Is the bending of the hero's body going to be like it is now? Looks a bit weird
🗪
1:05:12edvinholm Is the bending of the hero's body going to be like it is now? Looks a bit weird
🗪
1:05:43samnchiet On moving from Windows to Linux, how much of the onus of making this change lies on the consumers vs Linux OS "designers"? Linux distros aren't normally ordinary-user friendly
🗪
1:05:43samnchiet On moving from Windows to Linux, how much of the onus of making this change lies on the consumers vs Linux OS "designers"? Linux distros aren't normally ordinary-user friendly
🗪
1:05:43samnchiet On moving from Windows to Linux, how much of the onus of making this change lies on the consumers vs Linux OS "designers"? Linux distros aren't normally ordinary-user friendly
🗪
1:06:31doritosranger What do you think about free software (Stallman, FSF, GPL)?
🗪
1:06:31doritosranger What do you think about free software (Stallman, FSF, GPL)?
🗪
1:06:31doritosranger What do you think about free software (Stallman, FSF, GPL)?
🗪
1:13:08Close it up
🗩
1:13:08Close it up
🗩
1:13:08Close it up
🗩