Hi John ! On Tue, Jun 28, 2022 at 1:16 PM John Reiser <jrei...@bitwagon.com> wrote: > > On 6/28/22, Mathieu Malaterre wrote: > > % strace ./memcheck/memcheck-arm-linux > > execve("./memcheck/memcheck-arm-linux", > > ["./memcheck/memcheck-arm-linux"], 0xbe962730 /* 19 vars */) = 0 > > --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPC, si_addr=0x58072020} --- > > +++ killed by SIGILL +++ > > zsh: illegal hardware instruction strace ./memcheck/memcheck-arm-linux > > memcheck wants determine the actual hardware capabilities. > The description given by AT_PLATFORM, AT_HWCAP, AT_HWCAP2 > has not always been complete and correct, so memcheck > tries the hardware instructions that matter, and memcheck > is prepared to handle SIGILL if it occurs. Thus there > are likely to be a few deliberate SIGILL near the beginning. > If strace always halts upon SIGILL, without letting > memcheck's handler catch the SIGILL and recover from it, > then strace is too eager. For instance, on x86_64 > strace always aborts on 'int3' regardless of signal handlers.
Thanks for the detailed explanation. I must admit this is way too low level stuff for me. > What happens without using 'strace'? Same symptoms (AFAIK): % ./memcheck/memcheck-arm-linux zsh: illegal hardware instruction ./memcheck/memcheck-arm-linux Just in case that help, here is the gdb output (*) Let me know if you need more output. (*) % gdb ./memcheck/memcheck-arm-linux GNU gdb (Debian 12.1-2) 12.1 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "arm-linux-gnueabihf". Type "show configuration" for configuration details. For bug reporting instructions, please see: <https://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./memcheck/memcheck-arm-linux... (gdb) r Starting program: /home/malat/valgrind-3.19.0/memcheck/memcheck-arm-linux Program received signal SIGILL, Illegal instruction. vgPlain_am_startup (sp_at_startup=3204445840) at m_aspacemgr/aspacemgr-linux.c:1626 1626 init_nsegment(&seg); (gdb) bt full #0 vgPlain_am_startup (sp_at_startup=3204445840) at m_aspacemgr/aspacemgr-linux.c:1626 seg = {kind = 0, start = 0, end = 0, smode = SmLower, dev = 0, ino = 0, offset = 5378467285696512, mode = 3204445844, fnIdx = -1090521456, hasR = 0 '\000', hasW = 0 '\000', hasX = 38 '&', hasT = 88 'X', isCH = 164 '\244'} suggested_clstack_end = <optimized out> __PRETTY_FUNCTION__ = "vgPlain_am_startup" #1 0x580ccec4 in valgrind_main (envp=0xbefff69c, argv=0xbefff694, argc=1) at m_main.c:1431 loglevel = <optimized out> i = <optimized out> vex_archinfo = {hwcaps = 1482711920, endness = 0, hwcache_info = {num_levels = 0, num_caches = 0, caches = 0x0, icaches_maintain_coherence = 0 '\000'}, ppc_icache_line_szB = 0, ppc_dcbz_szB = 0, ppc_scv_supported = 0 '\000', ppc_dcbzl_szB = 0, arm64_dMinLine_lg2_szB = 0, arm64_iMinLine_lg2_szB = 0, arm64_requires_fallback_LLSC = 0 '\000'} need_help = <optimized out> tid_main = 0 addr2dihandle = 0x0 wd = <optimized out> need_help = <optimized out> tid_main = <optimized out> loglevel = <optimized out> i = <optimized out> addr2dihandle = <optimized out> __PRETTY_FUNCTION__ = "valgrind_main" vex_archinfo = <optimized out> wd = <optimized out> tmp_str = <optimized out> res = <optimized out> val = <optimized out> res = <optimized out> val = <optimized out> s = <optimized out> n = <optimized out> res = <optimized out> val = <optimized out> s = <optimized out> n = <optimized out> val = <optimized out> ok = <optimized out> errmsg = <optimized out> limLo = <optimized out> limHi = <optimized out> aLocal = <optimized out> p = <optimized out> cp = <optimized out> vex_arch = <optimized out> ok = <optimized out> buf = <optimized out> buf2 = <optimized out> fd = <optimized out> r = <optimized out> nul = <optimized out> exename = <optimized out> client_auxv = <optimized out> client_auxv_len = <optimized out> --Type <RET> for more, q to quit, c to continue without paging-- arg = <optimized out> s = <optimized out> ok = <optimized out> seg_starts = <optimized out> n_seg_starts = <optimized out> anu = <optimized out> change_ownership_v_c_OK = <optimized out> co_start = <optimized out> co_endPlus = <optimized out> buf = <optimized out> seg_starts = <optimized out> n_seg_starts = <optimized out> j = <optimized out> n = <optimized out> seg = <optimized out> anl = <optimized out> inaccessible_len = <optimized out> seg = <optimized out> seg = <optimized out> #2 _start_in_C_linux (pArgc=0xbefff690) at m_main.c:3125 r = <optimized out> argc = 1 argv = 0xbefff694 envp = 0xbefff69c #3 0x00000000 in ?? () No symbol table info available. Backtrace stopped: previous frame identical to this frame (corrupt stack?) _______________________________________________ Valgrind-users mailing list Valgrind-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-users