https://bugs.kde.org/show_bug.cgi?id=433272
Bug ID: 433272 Summary: Boost iostreams mapped_file causes unrecognised instruction Product: valgrind Version: 3.15 SVN Platform: Other OS: Linux Status: REPORTED Severity: crash Priority: NOR Component: general Assignee: jsew...@acm.org Reporter: qoman...@gmail.com Target Milestone: --- SUMMARY Checking a program that uses boost's iostreams::mapped_file causes valgrind to crash with "unrecognized instruction" on an amd64 architecture. STEPS TO REPRODUCE 1. Simple Testprogramm #include <boost/spirit/include/qi.hpp> #include <boost/iostreams/device/mapped_file.hpp> bool read_DOUBLES(const std::string& filename, std::vector<double>& values, const int N) { boost::iostreams::mapped_file mmap(filename, boost::iostreams::mapped_file::mapmode::readonly); auto f = mmap.const_data(); auto l = f + mmap.size(); values.reserve(N); boost::spirit::qi::phrase_parse(f, l, +boost::spirit::qi::double_, boost::spirit::qi::space, values); return 0; } int main(const int, const char** argv) { std::vector<double> data_vector; read_DOUBLES("Textfile.txt", data_vector, 10); return 0; } 2. Run valgrind on it OBSERVED RESULT: vex amd64->IR: unhandled instruction bytes: 0x62 0x91 0x7F 0x28 0x6F 0x4 0x3 0x62 0x91 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 ==221533== valgrind: Unrecognised instruction at address 0x4035c90. ==221533== at 0x4035C90: mempcpy (vg_replace_strmem.c:1540) ==221533== by 0x400587F: open_path (in /usr/lib64/ld-2.17.so) ==221533== by 0x4008776: _dl_map_object (in /usr/lib64/ld-2.17.so) ==221533== by 0x400CC61: openaux (in /usr/lib64/ld-2.17.so) ==221533== by 0x400F7D3: _dl_catch_error (in /usr/lib64/ld-2.17.so) ==221533== by 0x400D46C: _dl_map_object_deps (in /usr/lib64/ld-2.17.so) ==221533== by 0x4003692: dl_main (in /usr/lib64/ld-2.17.so) ==221533== by 0x401800D: _dl_sysdep_start (in /usr/lib64/ld-2.17.so) ==221533== by 0x4001BD0: _dl_start (in /usr/lib64/ld-2.17.so) ==221533== by 0x4001147: ??? (in /usr/lib64/ld-2.17.so) ==221533== Your program just tried to execute an instruction that Valgrind ==221533== did not recognise. There are two possible reasons for this. ==221533== 1. Your program has a bug and erroneously jumped to a non-code ==221533== location. If you are running Memcheck and you just saw a ==221533== warning about a bad jump, it's probably your program's fault. ==221533== 2. The instruction is legitimate but Valgrind doesn't handle it, ==221533== i.e. it's Valgrind's fault. If you think this is the case or ==221533== you are not sure, please let us know and we'll try to fix it. ==221533== Either way, Valgrind will now raise a SIGILL signal which will ==221533== probably kill your program. EXPECTED RESULT No Crash. (Runs error-free on Fedora 31) SOFTWARE/OS VERSIONS Windows: macOS: Linux/KDE Plasma: CentOS Linux 7 Kernel: Linux 3.10.0-1127.13.1.el7.x86_64 Architecture: x86-64 -- You are receiving this mail because: You are watching all bug changes.