Virtual Villagers Fun Patcher v1.34.7-rc34 — Creator Testing Pre-Release
Pre-releaseCreator Testing Pre-Release
Purpose
Fixes the VV1 Barrel of Babies crash you reported on rc33 — root-caused by decompiling the stock binary with IDA rather than trusting the existing test or my own earlier fix from rc30.
What was actually wrong
The rc30 fix (gating the event on the Tech screen actually closing) was correct and necessary, but incomplete — I never verified the native event-firing code underneath it. Tracing the full chain with IDA now:
- Buying sets a token; the Tech screen closing advances it to "fire now" (this part was already right).
- The village-tick loop then heap-allocates a temporary event object and constructs it — this step genuinely shows "Gained 3 children" and creates 3 new villagers; I traced it all the way down and it's correct.
- A blocking dialog shows that message until you click OK.
- The temporary object was then torn down with the wrong destructor — a method belonging to a completely different class, which walks the wrong vtable and frees the wrong memory. That corrupts the heap. It doesn't crash immediately; it crashes later, in unrelated code, whenever something else touches the corrupted heap state next.
I pulled the real Windows Application Error Event Log records from your last test: two crashes, at two different addresses, both in generic code with no obvious connection to Barrel of Babies — consistent with delayed heap corruption, and it explains why the very next launch also crashed (the corruption was already there).
A pre-existing test had actually asserted the broken destructor call was correct, under a mistaken name ("stock scalar deleting destructor"). Nobody had decompiled it to check. Fixed the call, updated that test, and added a new one that disassembles the real rendered executable and checks the actual call targets and stack balance — not just source text.
Also in this release
Fixed a second, unrelated bug found while investigating: the transparency log / patch-log's self-reported patcher version had been stuck at "v1.34.7-rc11" for a long time (a second, never-synced copy of the version string). Every transparency log and patch-log this tool has produced was self-reporting the wrong version, which is exactly what caused confusion while I was trying to confirm which build you'd actually tested. Fixed at the source so it can't drift again.
Verified behavior
- Full test suite: identical failure set to rc33's baseline, minus two pre-existing failures fixed as a side effect (regenerating the now-current transparency doc).
- New regression test decodes the real rendered VV1 executable and confirms the correct destructor is called with balanced stack, and fails against the pre-fix code.
- Still not confirmed by actually playing — I have no way to launch the game in this environment. This is the one to retest.
Testing requested
- VV1 Barrel of Babies, same as before: buy it, close the Tech screen, click OK on the Island Event that fires. Should no longer crash, and should show 3 new children in the village.
- If you have a save from the crashing build, a fresh save is safer for this retest — the earlier crash may have written a corrupted or half-applied token/village state.
Virtual-Villagers-Fun-Patcher-v1.34.7-rc34.zip
SHA-256: 3EED6C72251214D7D37A4172AE223E92CB5E59245C52B65FA49DAD43D9E37B6F