Bug 356138 - vex amd64->IR unhandled instruction bytes 0x8F 0xEA 0x78 0x10 0xD2 0x6 0x6 0x0
Summary: vex amd64->IR unhandled instruction bytes 0x8F 0xEA 0x78 0x10 0xD2 0x6 0x6 0x0
Status: RESOLVED DUPLICATE of bug 339596
Alias: None
Product: valgrind
Classification: Developer tools
Component: memcheck (show other bugs)
Version: 3.10 SVN
Platform: Ubuntu Linux
: NOR major
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-12-01 03:42 UTC by Andreas Boerner
Modified: 2016-09-16 13:34 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Boerner 2015-12-01 03:42:28 UTC
running my C++ program gives the following output:
vex amd64->IR: unhandled instruction bytes: 0x8F 0xEA 0x78 0x10 0xD2 0x6 0x6 0x0
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
==18602== valgrind: Unrecognised instruction at address 0x527333.
==18602==    at 0x527333: COMPANY_NAMESPACE::DataPointerList2::PrepareRealloc(COMPANY_NAMESPACE::Operation&) (DataPointerList2.cpp:280)
==18602==    by 0x5289E4: COMPANY_NAMESPACE::DataPointerList2::DirtyBufferInsert(unsigned int, unsigned int const&) (DataPointerList2.cpp:668)
==18602==    by 0x53D53E: (anonymous namespace)::DataPointerTestCase_DirtyBuffers64_Test::TestBody() (DataPointerListTest.cpp:687)
==18602==    by 0x50ED12: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (in /mnt/data/git/dataStruct/config/clang/bin/main)
==18602==    by 0x503BC0: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2438)
==18602==    by 0x4F51BA: testing::Test::Run() (gtest.cc:2474)
==18602==    by 0x4F5C8D: testing::TestInfo::Run() (gtest.cc:2656)
==18602==    by 0x4F63A6: testing::TestCase::Run() (gtest.cc:2774)
==18602==    by 0x4FD76A: testing::internal::UnitTestImpl::RunAllTests() (gtest.cc:4648)
==18602==    by 0x50BB72: bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (in /mnt/data/git/dataStruct/config/clang/bin/main)
==18602==    by 0x505BF0: bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2438)
==18602==    by 0x4FD424: testing::UnitTest::Run() (gtest.cc:4256)
==18602== Your program just tried to execute an instruction that Valgrind
==18602== did not recognise.  There are two possible reasons for this.
==18602== 1. Your program has a bug and erroneously jumped to a non-code
==18602==    location.  If you are running Memcheck and you just saw a
==18602==    warning about a bad jump, it's probably your program's fault.
==18602== 2. The instruction is legitimate but Valgrind doesn't handle it,
==18602==    i.e. it's Valgrind's fault.  If you think this is the case or
==18602==    you are not sure, please let us know and we'll try to fix it.
==18602== Either way, Valgrind will now raise a SIGILL signal which will
==18602== probably kill your program.
==18602== 
==18602== Process terminating with default action of signal 4 (SIGILL)
==18602==  Illegal opcode at address 0x527333
==18602==    at 0x527333: COMPANY_NAMESPACE::DataPointerList2::PrepareRealloc(COMPANY_NAMESPACE::Operation&) (DataPointerList2.cpp:280)
==18602==    by 0x5289E4: COMPANY_NAMESPACE::DataPointerList2::DirtyBufferInsert(unsigned int, unsigned int const&) (DataPointerList2.cpp:668)
==18602==    by 0x53D53E: (anonymous namespace)::DataPointerTestCase_DirtyBuffers64_Test::TestBody() (DataPointerListTest.cpp:687)
==18602==    by 0x50ED12: void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (in /mnt/data/git/dataStruct/config/clang/bin/main)
==18602==    by 0x503BC0: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2438)
==18602==    by 0x4F51BA: testing::Test::Run() (gtest.cc:2474)
==18602==    by 0x4F5C8D: testing::TestInfo::Run() (gtest.cc:2656)
==18602==    by 0x4F63A6: testing::TestCase::Run() (gtest.cc:2774)
==18602==    by 0x4FD76A: testing::internal::UnitTestImpl::RunAllTests() (gtest.cc:4648)
==18602==    by 0x50BB72: bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (in /mnt/data/git/dataStruct/config/clang/bin/main)
==18602==    by 0x505BF0: bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2438)
==18602==    by 0x4FD424: testing::UnitTest::Run() (gtest.cc:4256)
==18602== 
==18602== HEAP SUMMARY:
==18602==     in use at exit: 56,795 bytes in 511 blocks
==18602==   total heap usage: 1,304 allocs, 793 frees, 173,238 bytes allocated
==18602== 
==18602== LEAK SUMMARY:
==18602==    definitely lost: 0 bytes in 0 blocks
==18602==    indirectly lost: 0 bytes in 0 blocks
==18602==      possibly lost: 0 bytes in 0 blocks
==18602==    still reachable: 56,795 bytes in 511 blocks
==18602==                       of which reachable via heuristic:
==18602==                         stdstring          : 15,076 bytes in 313 blocks
==18602==         suppressed: 0 bytes in 0 blocks
==18602== Rerun with --leak-check=full to see details of leaked memory
==18602== 
==18602== For counts of detected and suppressed errors, rerun with: -v
==18602== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
zsh: illegal hardware instruction (core dumped)  valgrind bin/main -gt


Reproducible: Always

Steps to Reproduce:
compile program with clang C++ compiler
Run the C++ compiled program:
valgrind bin/main -gt
(Unfortunately I can't provide a simple stand alone soure code)

Actual Results:  
Error message shown above

Expected Results:  
No error output; it works when compiled with g++

I also installed the latest version of valgrind, -3.11.0
the output is from this version.

The error shoes only if I compile with clang:
> clang++ --version
Ubuntu clang version 3.6.0-2ubuntu1~trusty1 (tags/RELEASE_360/final) (based on LLVM 3.6.0)
Target: x86_64-pc-linux-gnu
Thread model: posix

Error does not show if I compile with g++
> g++ --version    
g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

My processor is 
cpu family	: 21
model		: 2
model name	: AMD FX(tm)-8350 Eight-Core Processor

> lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 14.04.3 LTS
Release:	14.04
Codename:	trusty

 uname -a
Linux ac8 3.13.0-54-generic #91-Ubuntu SMP Tue May 26 19:15:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Comment 1 Andreas Boerner 2015-12-01 03:47:15 UTC
PS: version selection box ends at 3.10 SVN.
It does not allow to select 3.11
Comment 2 Andreas Boerner 2015-12-02 22:56:16 UTC
may be same as bug 339596?
Comment 3 Julian Seward 2016-07-20 17:14:21 UTC
Is possibly 
bextr  $0x1000606,%edx,%edx
Comment 4 Julian Seward 2016-09-16 13:34:03 UTC

*** This bug has been marked as a duplicate of bug 339596 ***