atsushieno / fluidsynth-midi-service-j

JNA-based fluidsynth MIDI device service effort
MIT License
26 stars 8 forks source link

SIGILL: illegal instruction operand #2

Closed atsushieno closed 5 years ago

atsushieno commented 6 years ago

Something went wrong...

screenshot from 2018-09-09 20-56-08

atsushieno commented 6 years ago

some facts:

2018-09-09 20:55:44.800 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET SEEK 1 : 0 / 2
2018-09-09 20:55:44.800 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET SEEK 4
2018-09-09 20:55:45.689 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET SEEK 7: 148398306
2018-09-09 20:55:45.689 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET TELL 1
2018-09-09 20:55:46.562 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET TELL 2 : 148398306
2018-09-09 20:55:46.563 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET SEEK 1 : 0 / 0
2018-09-09 20:55:46.563 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET SEEK 2
2018-09-09 20:55:46.563 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET SEEK 5: 0
2018-09-09 20:55:46.563 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET READ 1 : 8
2018-09-09 20:55:46.563 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET READ 2
2018-09-09 20:55:46.563 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET READ 3
2018-09-09 20:55:46.563 10280-10280/name.atsushieno.fluidsynthmidideviceservicej I/System.out: ASSET READ 4: read 8 byte(s). 82 73 70 70
2018-09-09 20:57:26.119 10280-10280/name.atsushieno.fluidsynthmidideviceservicej A/libc: Fatal signal 4 (SIGILL), code 2, fault addr 0xce96771e in tid 10280 (ideviceservicej), pid 10280 (ideviceservicej)
2018-09-09 20:57:30.052 10280-10280/name.atsushieno.fluidsynthmidideviceservicej A/libc: crash_dump helper failed to exec
2018-09-09 20:57:30.053 10280-10280/name.atsushieno.fluidsynthmidideviceservicej A/libc: failed to wait for crash_dump helper: No child processes
atsushieno commented 5 years ago

This does not happen if I use x86_64 emulator.

Some people reports that the same(?) problem started to happen when NDK default switched to clang from gcc: https://stackoverflow.com/questions/7901867/what-causes-signal-sigill#comment85158375_7901891

atsushieno commented 5 years ago

It crashes on Pixel2 (assuming that the build is arm64-v8a, possibly armeabi-v7a). Something is x64-specific.

atsushieno commented 5 years ago

The same binary crashed on x86 and Xamarin.Android, meaning that the binary build itself is likely broken (due to the issue mentioned at https://github.com/atsushieno/fluidsynth-midi-service-j/issues/2#issuecomment-431296091)

atsushieno commented 5 years ago

Basically this change fixes the exact part: https://github.com/atsushieno/fluidsynth-fork/commit/0239d37

fluid_opensles.c has similar SIGILL problem around fluid_opensles_adjust_latency() (this is hacky code and should be rewritten anyways).

atsushieno commented 5 years ago

This is practically fixed by 9a4c265. There are still remaining code path that could hit the issue but it is not really anticipated.