Details
-
Bug
-
Resolution: Cannot Reproduce
-
P1: Critical
-
None
-
5.9.1
-
None
-
Debian GNU/Linux experimental armhf
Description
Test case: run qmlwebsockets_compat test from Qt WebSockets. This happens with some other Qt modules too.
Result:
Thread 8 "QSGRenderThread" received signal SIGILL, Illegal instruction. [Switching to Thread 0xac933440 (LWP 3814)] 0xb3c5c038 in ?? ()
There is no useful stacktrace unfortunately. I think the stack could get corrupted due to bad assembly usage. Full valgrind output is attached (the first illegal instruction comes from OpenSSL which deliberately tests the CPU for certain features and handles SIGILLs; it is harmless).
Details about the illegal instruction:
disInstr(arm): unhandled instruction: 0xF2C02050 cond=15(0xF) 27:20=44(0x2C) 4:4=1 3:0=0(0x0)
This happens on a machine with this configuration:
model name : ARMv7 Processor rev 2 (v7l) BogoMIPS : 1594.36 Features : swp half thumb fastmult vfp edsp thumbee vfpv3 tls idiva idivt vfpd32 lpae CPU implementer : 0x56 CPU architecture: 7 CPU variant : 0x2 CPU part : 0x584 CPU revision : 2
and does not happen on a machine with this configuration:
model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 66.66 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpd32 CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x2 CPU part : 0xc08 CPU revision : 5
I failed to decode this instruction (any help appreciated), but because of the machines’ configuration I think that maybe the JIT engine tries to use NEON instructions even on machines without NEON support? (qtdeclarative was built also on a machine without NEON support.)