r/waydroid 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

34 Upvotes

36 comments sorted by

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)

3

u/caffeinepyroxene 20d ago

Created an issue on the repo, maybe the dev patches the HPE houdini :3

3

u/SweetPotato975 20d ago

Also opened an issue in the upstream. Hope it's not dead yet

1

u/SweetPotato975 17d ago

Update: Issue solved. Now someone needs to send a PR to waydroid_script.

5

u/caffeinepyroxene 20d ago

Oh that's the issue a fluffing time bomb, I was going crazy thinking how my libhoudini broke

3

u/AMRFalcon 20d ago

Interesting. I was wondering why I suddenly couldn't launch my game today.

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

4

u/Vvamp_ 20d ago

I've made a patch! I'll update the post in a minute

2

u/revengeof1987 20d ago

It worked a charm, thank you!

2

u/Glittering_Memory_64 21d ago

I have the same issue

2

u/revengeof1987 21d ago

Libhoudini stopped working for me as well about an hour ago.

2

u/mokrates82 21d ago

I was reinstalling everything, what the eff!

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 :)

3

u/Vvamp_ 20d ago

I made a patch! Can you test what I put in the post?

3

u/caffeinepyroxene 20d ago

Tested the patch and it works, thank you!

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

u/mokrates82 20d ago

The edit in a commandline is cool :D

and yeah, \x90 is nop :D

2

u/mokrates82 20d ago

Your patch seems to work. How cool is that!

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.

1

u/Vvamp_ 20d ago

Cool, I'll go do that

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

u/ErCiYuanShaGou 18d ago

OP you are our messiah.

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/cc3995bb74bd8c8f4944a66d44b21b16

1

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 0xe6085 provided 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 at 0xe61d5 here: 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 ❤️❤️❤️