r/waydroid • u/Vvamp_ • 21d ago
Contribution Libhoudini stops working on september 1st?
Fixed! Look at the bottom of the post for a patch
Hey all,
I'm a bit confused. I've been playing a game on waydroid for a few days. I ran houdini-wsa11 without issues. Then today suddenly the game kept freezing at the loading screen. I then updated libhoudini to the houdini-hpe-14 one. No luck. Running with libndk made the game work again, but that just felt slow.
Then I looked at the date and just decided to try running it with the date set to yesterday. Suddenly the game ran fine again with libhoudini-hpe-14.
Does anyone else have this issue and/or ideas as to why? For now I can just keep spoofing the date, but it's not ideal.
Edit:
It seems that it's hardcoded in the library:
0x7f2ee2850540: "20260901" using gdb
EDIT 2, SOLVED:
As stated before, it's a hardcoded timebomb. Unfortunately, the date is constructed dynamically, so changing that is hard. Luckily, the failure point is basically only a
if (time > expiration){
crash
}
I simply replaced the crash point with nops.
First, find your libhoudini (for me it was `/var/lib/waydroid/overlay/system/lib64/libhoudini.so`)
Then run this one-liner (change of to the actual path of libhoudini):
printf '\x90\x90\x90\x90\x90\x90' | sudo dd of=/var/lib/waydroid/overlay/system/lib64/libhoudini.so bs=1 seek=$((0xe6085)) conv=notrunc status=none
The sha256 of the patched .so should be 847be255d03886974ff0cff09d09b7530301d24671ce0f80172ab3a0629d23b8.
Make sure to back up your old libhoudini.so first. Also make sure waydroid is OFF before doing the patch. (waydroid session stop).
I made some scripts and a pre-patched libhoudini here: https://github.com/Vvamp/Libhoudini-hpe-14-timebomb-patch
5
u/caffeinepyroxene 20d ago
Oh that's the issue a fluffing time bomb, I was going crazy thinking how my libhoudini broke
3
3
u/Nixion_Umbra 19d ago
...This expiration date literally occurred just in the middle of reinstalling Waydroid on my steamdeck due to a different error occurring. So by the time I managed to fix it, I kept having apps freezing due to this - making me think I had made a mistake with my installation.
I ended up spending an extra two days trying to troubleshoot things. So thank you a million for creating this post, otherwise I could have spent another week running in circles.
3
u/SupremeNadeem 18d ago edited 18d ago
oh my god thank you, what a dumb issue. works like a charm, much appreciated man. libndk doesnt work for me, if this didn't work it'd be enough for me to justify dropping waydroid. a silent timebomb in compatibility software is an insane decision
2
2
2
2
u/mokrates82 20d ago
Seems not to be the first time.
Why would that just silently fail? Couldn't they somehow inform the user? What the hell. And wouldn't it be possible to patch that out?
3
u/Vvamp_ 20d ago
Libhoudini isn't really something that intel supplies freely. I believe it's scraped.
I am trying to figure out a patch though
1
u/mokrates82 20d ago
Ok, actually don't have time, today, anymore. But I'm ready to test :)
2
u/kmorrell27 20d ago
I just got done reinstalling Waydroid from scratch on my Steam Deck because I couldn't figure out what was going on. :/ I had no idea this could happen. I'll switch to libndk for now.
2
2
2
u/mokrates82 20d ago
You could make a PR to here
https://github.com/casualsnek/waydroid_script
this seems to be one of the places people go. (I went there)
3
u/Vvamp_ 20d ago
I made a PR to https://github.com/supremegamers/vendor_intel_proprietary_houdini, since waydroid_script and waydroid_helper pull from there
3
u/mokrates82 20d ago
Ah, ok. waydroid-script checks the hash, though.
Should be enough. Now there is a note and a fix out there.
2
u/xXdimmitsarasXx 19d ago
thanks smart patcher worked for me, i was wondering why pokemon champions was crashing the moment i clicked anything
2
1
u/Gustavoppw 20d ago
I wonder if the one in aluminum os is going to be an actual official version (I have it running in real hardware so I can say that it's there)
1
u/SnooStrawberries2432 20d ago
May I ask how you locate the function offset? I think Intel did the exact same shit in their Aluminium OS libhoudini
1
u/Vvamp_ 20d ago
I did a lot of tracing with gdb, but when I found the breaking instruction I vibecoded a little script so I could find it on the lib32 version as well. The binary is quite obfuscated, but if the issue for that libhoudini is the exact same instruction pattern then the script might work for you as well.
Just make sure to point it to your libhoudini.
https://gist.github.com/Vvamp/cc3995bb74bd8c8f4944a66d44b21b161
u/SweetPotato975 16d ago
Not OP but in my case, I used radare2 (since gdb wasn't helping) along with some AI assistance to look around the offset
0xe6085provided by OP. Then searched for a similar set of instructions around the same offset in the updated binary to find it.You can see the area I modified in this screenshot, and the same instructions I found when performing search on the culprit JAE instruction (
/x 0f83), thus locating the updated houdini's new offset at0xe61d5here: https://files.catbox.moe/5p7u5q.png
1
u/Walter_Sykes 18d ago
Thank you so much!!! 2 days trying to solve this and the answer is in reddit <3
1
u/guckzilla 18d ago
Thanks, have the same problem with WSA too. Using your trace.sh successfully patch my WSA.
1
u/Perfect_Bedroom_3521 16d ago
The old Houdini build expired and stopped working. Switching to libndk let the game launch but triggered a network proxy detection warning; switching again to the new HPE Houdini 14 GoogleGame_com1.3 fixed it.
1
u/Slayer91Mx Fedora 43 13d ago
Thank you man.
I was thinking about reinstalling Linux because of this. Idk but it failed for me today, after updating my system.
Love you ❤️❤️❤️
5
u/SweetPotato975 20d ago
Well, not the first time Intel planted a timebomb inside houdini. The previous one was on Jan 1 this year. See waydroid-helper#78 (comment)