Summary: | valgrind: the 'impossible' happened: (Archlinux) | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | David Rankin <drankinatty> |
Component: | memcheck | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED DUPLICATE | ||
Severity: | critical | CC: | tom |
Priority: | NOR | ||
Version: | 3.13.0 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | Source producing the executable triggering the error. |
*** This bug has been marked as a duplicate of bug 397012 *** *** This bug has been marked as a duplicate of bug 396887 *** |
Created attachment 114412 [details] Source producing the executable triggering the error. Running valgrind against a basic allocation and free of a simple char** with opendir/readdir valgrind rolled over and died with an 'impossible' error. (there are no compiler error/warnings `-Wall -Wextra -pedantic` and valgrind on opensuse successfully complete and reports no errors) However on Archlinux under both 4.17.13 and 4.17.14 (I didn't have an earlier kernel to test), valgrind does the impossible $ valgrind ./bin/opendir_readdir_dyn_char_basic ==1196== Memcheck, a memory error detector ==1196== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==1196== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info ==1196== Command: ./bin/opendir_readdir_dyn_char_basic ==1196== valgrind: the 'impossible' happened: Unsupported arch_prctl option host stacktrace: ==1196== at 0x580441BA: show_sched_status_wrk (m_libcassert.c:355) ==1196== by 0x580442D4: report_and_quit (m_libcassert.c:426) ==1196== by 0x58044517: panic (m_libcassert.c:502) ==1196== by 0x58044517: vgPlain_core_panic_at (m_libcassert.c:507) ==1196== by 0x5804454A: vgPlain_core_panic (m_libcassert.c:512) ==1196== by 0x580DAE22: vgSysWrap_amd64_linux_sys_arch_prctl_before (syswrap-amd64-linux.c:286) ==1196== by 0x580A0C23: vgPlain_client_syscall (syswrap-main.c:1857) ==1196== by 0x5809D48A: handle_syscall (scheduler.c:1126) ==1196== by 0x5809EBB6: vgPlain_scheduler (scheduler.c:1443) ==1196== by 0x580AED50: thread_wrapper (syswrap-linux.c:103) ==1196== by 0x580AED50: run_a_thread_NORETURN (syswrap-linux.c:156) sched status: running_tid=1 Thread 1: status = VgTs_Runnable (lwpid 1196) ==1196== at 0x401A1C5: ??? (in /usr/lib/ld-2.28.so) ==1196== by 0x178BFBFE: ??? Note: see also the FAQ in the source distribution. It contains workarounds to several common problems. In particular, if Valgrind aborted or crashed after identifying problems in your program, there's a good chance that fixing those problems will prevent Valgrind aborting or crashing, especially if it happened in m_mallocfree.c. If that doesn't help, please report this bug to: www.valgrind.org In the bug report, send all the above text, the valgrind version, and what OS and version you are using. Thanks. Simple test code that read the directory entries from the directory given as the first argument ('.' by default if no argument is given) and simply outputs the stored names to stdout freeing the storage as it goes and freeing the pointers at the end is attached. Compiler string used: gcc -Wall -Wextra -pedantic -Wshadow -finline-functions -std=gnu11 -Ofast -o /tmp/bin/opendir_readdir_dyn_char_basic opendir_readdir_dyn_char_basic.c