Hallo zusammen, ich habe hier ein interessantes Problem bzw. eine Meldung, mit der ich nicht viel anfangen kann. Nach Erstellung eines eigenen DEB Paketes für Opentrack (allerdings unter Debian 12) kann ich das Paket in einer VM mit Ubuntu 24.04 ganz normal installieren und das Binary dann auch ausführen. Ohne Fehler.
Auf echter Hardware (unter Ubuntu 24.04) läuft die DEB Installation auch durch, jedoch bekomme ich beim Start des Binary:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | vex amd64->IR: unhandled instruction bytes: 0x62 0xF1 0x7F 0x48 0x7F 0x47 0x1 0x62 0xF1 0x7F vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0 vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=NONE vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0 ==169216== valgrind: Unrecognised instruction at address 0x641b90b. ==169216== at 0x641B90B: array (array:99) ==169216== by 0x641B90B: powerset (powerset.hpp:59) ==169216== by 0x641B90B: auto make_powerset<int, int, int>(int const&, int const&, int const&) (powerset.hpp:75) ==169216== by 0x6418432: __static_initialization_and_destruction_0 (qxtglobalshortcut_x11.cpp:57) ==169216== by 0x6418432: _GLOBAL__sub_I_qxtglobalshortcut_x11.cpp (qxtglobalshortcut_x11.cpp:456) ==169216== by 0x400571E: call_init.part.0 (dl-init.c:74) ==169216== by 0x4005823: call_init (dl-init.c:120) ==169216== by 0x4005823: _dl_init (dl-init.c:121) ==169216== by 0x401F59F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2) ==169216== Your program just tried to execute an instruction that Valgrind ==169216== did not recognise. There are two possible reasons for this. ==169216== 1. Your program has a bug and erroneously jumped to a non-code ==169216== location. If you are running Memcheck and you just saw a ==169216== warning about a bad jump, it's probably your program's fault. ==169216== 2. The instruction is legitimate but Valgrind doesn't handle it, ==169216== i.e. it's Valgrind's fault. If you think this is the case or ==169216== you are not sure, please let us know and we'll try to fix it. ==169216== Either way, Valgrind will now raise a SIGILL signal which will ==169216== probably kill your program. ==169216== ==169216== Process terminating with default action of signal 4 (SIGILL) ==169216== Illegal opcode at address 0x641B90B ==169216== at 0x641B90B: array (array:99) ==169216== by 0x641B90B: powerset (powerset.hpp:59) ==169216== by 0x641B90B: auto make_powerset<int, int, int>(int const&, int const&, int const&) (powerset.hpp:75) ==169216== by 0x6418432: __static_initialization_and_destruction_0 (qxtglobalshortcut_x11.cpp:57) ==169216== by 0x6418432: _GLOBAL__sub_I_qxtglobalshortcut_x11.cpp (qxtglobalshortcut_x11.cpp:456) ==169216== by 0x400571E: call_init.part.0 (dl-init.c:74) ==169216== by 0x4005823: call_init (dl-init.c:120) ==169216== by 0x4005823: _dl_init (dl-init.c:121) ==169216== by 0x401F59F: ??? (in /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2) ==169216== ==169216== HEAP SUMMARY: ==169216== in use at exit: 100,237 bytes in 194 blocks ==169216== total heap usage: 194 allocs, 0 frees, 100,237 bytes allocated ==169216== ==169216== LEAK SUMMARY: ==169216== definitely lost: 0 bytes in 0 blocks ==169216== indirectly lost: 0 bytes in 0 blocks ==169216== possibly lost: 160 bytes in 2 blocks ==169216== still reachable: 100,077 bytes in 192 blocks ==169216== suppressed: 0 bytes in 0 blocks ==169216== Rerun with --leak-check=full to see details of leaked memory ==169216== ==169216== For lists of detected and suppressed errors, rerun with: -s ==169216== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Illegal instruction (core dumped) |
Valgrind kann hier wohl mit einer instruction nichts anfangen? Ich bin kein Programmierer und tue mir deshalb bei der Interpretation schwer. Offenbar ist hier auch die ld-linux-x86-64.so.2 im Spiel.
Kann mir jemand von euch eventuell mitteilen, wo man hier ansetzen kann?
Danke sehr!
Moderiert von redknight:
Ins passende Forum verschoben.