Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libhoudini install breaks 32 bit waydroid #57

Open
dreamlayers opened this issue Nov 15, 2022 · 4 comments
Open

libhoudini install breaks 32 bit waydroid #57

dreamlayers opened this issue Nov 15, 2022 · 4 comments

Comments

@dreamlayers
Copy link

dreamlayers commented Nov 15, 2022

I'm running Waydroid in Ubuntu 22.10. The CPU doesn't support SSE4.2, so Waydroid installs 32-bit Android. It works. But then if I install libhoudini, it stops working. The only relevant error message I'm able to see is this in waydroid log:
lxc-start: waydroid: conf.c: run_buffer: 321 Script exited with status 126

This seems to be because of the way build props are set, including 64 abi props. I got Waydroid to work again by changing abi props to:

ro.product.cpu.abi=x86
ro.product.cpu.abilist=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi

After that I could install an app with 32 bit arm libraries. But then, trying to run it, I get this in logcat:

11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> AES << is not supported.
11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> POPCNT << is not supported.
11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> SSE4_2 << is not supported.
11-15 16:33:10.653 44041 44110 D houdini : [44110] Expected CPU feature >> PCLMULQDQ << is not supported.
11-15 16:33:10.658    45    45 I tombstoned: received crash request for pid 44041

So, at least this build of houdini can't actually run on my CPU. I wonder if houdini can be built without those requirements?

Edit: Installing libndk runs into the same problems. Again there is a need to edit system/build.prop the same way. Then when I try to run the app, it dies with SIGILL (illegal instruction) in the NDK library.

Using https://github.com/mirh/opemu-linux, which I needed to alter a bit to run with my kernel, the translators crash a different way instead. Opemu works well enough to make POPCNT work, but I guess there are some problems with other instructions.

@WesleyVanNeck
Copy link
Contributor

update your hardware

@dreamlayers
Copy link
Author

It would be nice if waydroid_script refused to install Houdini on 32 bit Waydroid instead of breaking Waydroid.

@ayasa520
Copy link
Contributor

ayasa520 commented Jan 20, 2023

There are 3 versions of Houdini:

x: arm32 translation for x86
y: arm32 translation for x86_64
z: arm64 translation for x86_64

But after Android11, only y and z exist.

@mirh
Copy link

mirh commented Nov 26, 2024

Houdini is closed source, so you can't really do much about it.
I can guess that the library has these bullshit requirements (seriously, AES-NI? lol) because they were targetting and really trying to squeeze their silvermont tablets. And I don't really know anything that emulates that, except perhaps SDE.
Idk about libndk which is really even more undocumented, but it's probably the same story (if not worse, who knows perhaps they targeted ryzens with AVX? you should really check your crash dumps with gdb to see which instruction faults). Did you try this?

Or another idea could be to try older versions of libhoudini (probably a process that comes way smoother if trying older android/rom versions altogether). The thing actually started with Medfield in 2012 (i.e. Saltwell) whose SSSE3 support is already a miracle (and the actual minimum requirement). So you shouldn't have a problem with your Core 2.
p.s. there is also some qemu-user magic floating around..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants