Puddle (2012 Win game from GOG) does not run

Puddle (Lutris entry) installs fine from GOG but does not run. One relevant line seen in log:

* Assertion at /vagrant/mono/mono/metadata/marshal-ilgen.c:94, condition `method' not met, function:get_method_nofail, Could not lookup method <MarshalDestroy> in allocator<wchar_t>

Looking for any help with this.

Environment:

  • HW: 2014 laptop with Intel i5-5200 CPU, i915 driver for integrated graphics
  • SW: Fedora 43 Workstation (GNOME DE, Lutris 0.5.19-9 testing pkg)

The same error occurs using multiple wine versions:

Full output using wine-staging-11.2-x86_64 provided by Lutris
Started initial process 297312 from gamemoderun /home/user/.local/share/lutris/runners/wine/wine-staging-11.2-x86_64/bin/wine /home/user/bin/games/gog/puddle/drive_c/GOG Games/Puddle/Launcher.exe
Start monitoring process.
gamemodeauto: 
* Assertion at /vagrant/mono/mono/metadata/marshal-ilgen.c:94, condition `method' not met, function:get_method_nofail, Could not lookup method <MarshalDestroy> in allocator<wchar_t>

Monitored process exited.
Initial process has exited (return code: 0)
Exit with return code 0
Full output using wine 11.0-2.fc43 provided by Fedora 43
$ dnf list installed wine{,-core,-mono}
Installed packages
wine.i686        11.0-2.fc43   updates
wine.x86_64      11.0-2.fc43   updates
wine-core.i686   11.0-2.fc43   updates
wine-core.x86_64 11.0-2.fc43   updates
wine-mono.noarch 10.4.1-1.fc43 updates
$ cd ~/bin/games/gog/puddle/
$ WINEPREFIX=`pwd` drive_c/GOG\ Games/Puddle/Launcher.exe
002c:fixme:winediag:loader_init wine-staging 11.0 is a testing version containing experimental patches.
002c:fixme:winediag:loader_init Please mention your exact version when filing bug reports on winehq.org.
012c:fixme:file:NtLockFile I/O completion on lock not implemented yet
012c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
012c:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 1)
012c:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 1)
0024:fixme:winediag:loader_init wine-staging 11.0 is a testing version containing experimental patches.
0024:fixme:winediag:loader_init Please mention your exact version when filing bug reports on winehq.org.
015c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
015c:fixme:msvcm:CrtImplementationDetails_DoDllLanguageSupportValidation stub
015c:fixme:msvcm:CrtImplementationDetails_RegisterModuleUninitializer 026E42C8: stub
* Assertion at /vagrant/mono/mono/metadata/marshal-ilgen.c:94, condition `method' not met, function:get_method_nofail, Could not lookup method <MarshalDestroy> in allocator<wchar_t>

0170:fixme:winediag:loader_init wine-staging 11.0 is a testing version containing experimental patches.
0170:fixme:winediag:loader_init Please mention your exact version when filing bug reports on winehq.org.
Output using lutris-7.2-2-x86_64 provided by Lutris
Started initial process 309999 from gamemoderun /home/user/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64/bin/wine /home/user/bin/games/gog/puddle/drive_c/GOG Games/Puddle/Launcher.exe
Start monitoring process.
gamemodeauto: 
fsync: up and running.

(wine:310298): GStreamer-WARNING **: 20:28:45.034: Failed to load plugin '/home/user/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64/lib64/gstreamer-1.0/libgstmpg123.so': /home/user/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64/lib64/gstreamer-1.0/libgstmpg123.so: wrong ELF class: ELFCLASS64
### snip, really very many similar ELFCLASS64 warnings ###
(wine:310298): GStreamer-WARNING **: 20:28:45.041: Failed to load plugin '/home/user/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64/lib64/gstreamer-1.0/libgstcamerabin.so': /home/user/.local/share/lutris/runners/wine/lutris-7.2-2-x86_64/lib64/gstreamer-1.0/libgstcamerabin.so: wrong ELF class: ELFCLASS64
wine: configuration in L"X:\\bin\\games\\gog\\puddle" has been updated.
* Assertion at /vagrant/mono/mono/metadata/marshal-ilgen.c:94, condition `method' not met, function:get_method_nofail, Could not lookup method <MarshalDestroy> in allocator<wchar_t>

Monitored process exited.
Initial process has exited (return code: 768)
Exit with return code 768

I think the vagrant name from the error line is a red herring; not a reference to the well known environment management tool. I found the failing assertion in marshel-ligen.c, a part of mono’s codebase` where AFAICT input data is ‘marshaled’.

I’m looking for any tips on how to debug this further. I suppose I could start decompiling the Puddle program but don’t know much about that. It doesn’t seem a simple missing dependency to me, but an incompatibility in mono as compared to MS’ closed .net implementation.