Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-76083

valgrind: Unrecognized instruction in QRandomGenerator::_fillRange

    XMLWordPrintable

Details

    • Linux/X11

    Description

       

      Shortly, our tests are built with RTTI enabled (-frtti).

      We see the following Valgrind issues popping up, either instruction 0x61dd150 or 0x5e78150

      Config: Using QtTest library 5.12.2, Qt 5.12.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.4.0 20160609)
      PASS   : Test::initTestCase()
      PASS   : Test::testDefaultConstructor()
      vex amd64->IR: unhandled instruction bytes: 0xF 0xC7 0xF2 0xB9 0x1 0x0 0x0 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=0F
      vex amd64->IR:   PFX.66=0 PFX.F2=0 PFX.F3=0
      ==11055== valgrind: Unrecognised instruction at address 0x61dd150.
      ==11055==    at 0x61DD150: ??? (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11055==    by 0x61DDBF6: ??? (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11055==    by 0x61DE678: QRandomGenerator::_fillRange(void*, void*) (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11055==    by 0x623D1DB: ??? (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11055==    by 0x623DB55: QHashData::detach_helper(void (*)(QHashData::Node*, void*), void (*)(QHashData::Node*), int, int) (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11055==    by 0x4EAE3DD: QHash<Lut, int>::detach_helper() (qhash.h:599)
      ==11055==    by 0x4EACA9C: QHash<Lut, int>::detach() (in /tmp/build/bin/libPluginBase.so.1.0.0)
      ==11055==    by 0x4EAACD6: ...
      ==11055==    by 0x4EA8C5C: ...
      ==11055==    by 0x408EF9: ...
      ==11055==    by 0x40E244: Test::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (tst_test.moc:89)
      ==11055==    by 0x63CC0B8: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11055== Your program just tried to execute an instruction that Valgrind
      ==11055== did not recognise.  There are two possible reasons for this.
      ==11055== 1. Your program has a bug and erroneously jumped to a non-code
      ==11055==    location.  If you are running Memcheck and you just saw a
      ==11055==    warning about a bad jump, it's probably your program's fault.
      ==11055== 2. The instruction is legitimate but Valgrind doesn't handle it,
      ==11055==    i.e. it's Valgrind's fault.  If you think this is the case or
      ==11055==    you are not sure, please let us know and we'll try to fix it.
      ==11055== Either way, Valgrind will now raise a SIGILL signal which will
      ==11055== probably kill your program.
      

       or:

       

      Config: Using QtTest library 5.12.2, Qt 5.12.2 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 5.4.0 20160609)
      PASS   : OtherTest::initTestCase()
      PASS   : OtherTest::testDefaultConstructor()
      vex amd64->IR: unhandled instruction bytes: 0xF 0xC7 0xF2 0xB9 0x1 0x0 0x0 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=0F
      vex amd64->IR:   PFX.66=0 PFX.F2=0 PFX.F3=0
      ==11046== valgrind: Unrecognised instruction at address 0x5e78150.
      ==11046==    at 0x5E78150: ??? (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11046==    by 0x5E78BF6: ??? (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11046==    by 0x5E79678: QRandomGenerator::_fillRange(void*, void*) (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11046==    by 0x5ED81DB: ??? (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11046==    by 0x5ED8B55: QHashData::detach_helper(void (*)(QHashData::Node*, void*), void (*)(QHashData::Node*), int, int) (in /opt/qt512/lib/libQt5Core.so.5.12.2)
      ==11046==    by 0x4EA0F07: QHash<QString, QString>::detach_helper() (qhash.h:599)
      ==11046==    by 0x4EA0B1A: QHash<QString, QString>::detach() (in /tmp/build/bin/libPluginBase.so.1.0.0)
      ==11046==    by 0x4EA07EC: QHash<QString, QString>::insert(QString const&, QString const&) (qhash.h:771)
      ==11046==    by 0x4E9FD3D: ...
      ==11046==    by 0x4E9EB51: ...
      ==11046==    by 0x4EA2CF4: ...
      ==11046==    by 0x4EA1483: ...
      ==11046== Your program just tried to execute an instruction that Valgrind
      ==11046== did not recognise.  There are two possible reasons for this.
      ==11046== 1. Your program has a bug and erroneously jumped to a non-code
      ==11046==    location.  If you are running Memcheck and you just saw a
      ==11046==    warning about a bad jump, it's probably your program's fault.
      ==11046== 2. The instruction is legitimate but Valgrind doesn't handle it,
      ==11046==    i.e. it's Valgrind's fault.  If you think this is the case or
      ==11046==    you are not sure, please let us know and we'll try to fix it.
      ==11046== Either way, Valgrind will now raise a SIGILL signal which will
      ==11046== probably kill your program.
      

       

       

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            thiago Thiago Macieira
            sam.jaques Sam Jaques
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes