Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Problem with disassembler and SIGILL signal
Forum Updated to NodeBB v4.3 + New Features

Problem with disassembler and SIGILL signal

Scheduled Pinned Locked Moved Solved General and Desktop
59 Posts 4 Posters 23.0k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Amaury
    20 Dec 2016, 08:12

    @SGaist I am removing the translator because it looked like that was this function that send the SIGILL signal .
    After all it seems that it doesn't changed anything, but I do need it , just that I can translate my pop-ups in a different way.

    @mrjj I'm going to look those potential solutions and post here if I get the answer.

    K Offline
    K Offline
    kshegunov
    Moderators
    wrote on 20 Dec 2016, 08:14 last edited by
    #30

    @Amaury
    It'd be helpful if you also extract the assembly (a few lines) from the point of the crash, where you get the SIGILL.

    Read and abide by the Qt Code of Conduct

    1 Reply Last reply
    1
    • A Offline
      A Offline
      Amaury
      wrote on 20 Dec 2016, 08:17 last edited by
      #31

      Those are the first 15 lines of the disassembler where I get my Sigill signal : it happens on line 6

      0x6f6a2dd4                   00 00 00 00  andeq	r0, r0, r0
      0x6f6a2dd8                   00 00 00 00  andeq	r0, r0, r0
      0x6f6a2ddc                   00 00 00 00  andeq	r0, r0, r0
      0x6f6a2de0                   fe e1 6e f2  vorr	q15, q15, q15
      0x6f6a2de4                   1e ff 2f e1  bx	lr
      0x6f6a2de8                   1d 0f 19 ee  mrc	15, 0, r0, cr9, cr13, {0}
      0x6f6a2dec                   1e ff 2f e1  bx	lr
      0x6f6a2df0                   9f 2f 90 e1  ldrex	r2, [r0]
      0x6f6a2df4                   01 30 82 e0  add	r3, r2, r1
      0x6f6a2df8                   93 2f 80 e1  strex	r2, r3, [r0]
      0x6f6a2dfc                   00 00 52 e3  cmp	r2, #0
      0x6f6a2e00                   fa ff ff 1a  bne	0x6f6a2df0
      0x6f6a2e04                   03 00 a0 e1  mov	r0, r3
      0x6f6a2e08                   1e ff 2f e1  bx	lr
              Function: OPENSSL_cleanse
      
      1 Reply Last reply
      0
      • A Offline
        A Offline
        Amaury
        wrote on 20 Dec 2016, 15:04 last edited by
        #32

        Hi there ,

        after a day of research I finnaly didn't found what's the real problem .

        I read that the return a.exec() Will execute only when a signal is send to it ( when nothing is shown).

        I maybe found a track that leads to my destructors , I have some sql request and QUrl posts in my program , ido I need to delete them in the destructor , would that cause a problem if the program is executed during a long time ?

        Everything is compiling fine and my program is running well but after a period of time it's crashing.

        Finally I was thinking about the SIGILL signal ,when I F10 or F11 on this it's running this part of the program but if it's closing everything on the app would it be normal to have this signal ?

        don't know if I was clear ...

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mrjj
          Lifetime Qt Champion
          wrote on 20 Dec 2016, 15:21 last edited by mrjj
          #33

          Hi
          SIGILL is not normal.
          From normal program errors you do not get this in any easy way.
          So the big question is. Can you can get SIGILL from a normal GUI program or
          only when using your full code?

          It might be some sort of corruption but impossible to guess at :)

          1 Reply Last reply
          0
          • A Offline
            A Offline
            Amaury
            wrote on 20 Dec 2016, 15:28 last edited by Amaury
            #34

            I didn't tried that but it works with another program I don't have any SIGILL error ...

            the problem with this is that I have something like 18 pages and 500 lines by pages on average.

            So that said to find out where the problem is do I have to check each lines of my program ? :/

            M 1 Reply Last reply 20 Dec 2016, 15:39
            0
            • A Amaury
              20 Dec 2016, 15:28

              I didn't tried that but it works with another program I don't have any SIGILL error ...

              the problem with this is that I have something like 18 pages and 500 lines by pages on average.

              So that said to find out where the problem is do I have to check each lines of my program ? :/

              M Offline
              M Offline
              mrjj
              Lifetime Qt Champion
              wrote on 20 Dec 2016, 15:39 last edited by
              #35

              @Amaury
              Well if ONLY this program does it. Its not compiler.
              But you should be really clear about it.
              Else you can waste tons of time.

              So yes, if it is program error in your code. You will need to find the actual line/the bug.

              You can try http://valgrind.org/ but its takes time to use and understand.

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Amaury
                wrote on 20 Dec 2016, 15:48 last edited by
                #36

                Thanks for the support , I need to debug my program before I continue so I prefer to waste little time to understand and use the program.
                I can't try to debug the code line per line it would take too long and it should be everywhere .

                At least when I'm done with it I finally have to find a solution to start my app on boot but for now if it crashes all the time it's not really usefull.

                M 1 Reply Last reply 20 Dec 2016, 15:53
                0
                • A Amaury
                  20 Dec 2016, 15:48

                  Thanks for the support , I need to debug my program before I continue so I prefer to waste little time to understand and use the program.
                  I can't try to debug the code line per line it would take too long and it should be everywhere .

                  At least when I'm done with it I finally have to find a solution to start my app on boot but for now if it crashes all the time it's not really usefull.

                  M Offline
                  M Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on 20 Dec 2016, 15:53 last edited by
                  #37

                  @Amaury
                  Well u should look for array copy. dangling pointers.
                  old char * types and stuff like that.
                  To get SIGILL from program bug , you must corrupt
                  something in the code segment.
                  Easy way is to use dangling pointer.

                  So maybe you can guess at functions where it might happen.

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    Amaury
                    wrote on 21 Dec 2016, 08:38 last edited by Amaury
                    #38

                    @mrjj
                    Well right now you're talking to me in japanese ^^
                    I'm going to have a look on that didn't had time yesterday , I think I can be helped for one thing or two :)
                    I'll come back if my problem is solve or not.

                    M 1 Reply Last reply 21 Dec 2016, 08:42
                    0
                    • A Amaury
                      21 Dec 2016, 08:38

                      @mrjj
                      Well right now you're talking to me in japanese ^^
                      I'm going to have a look on that didn't had time yesterday , I think I can be helped for one thing or two :)
                      I'll come back if my problem is solve or not.

                      M Offline
                      M Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on 21 Dec 2016, 08:42 last edited by
                      #39

                      @Amaury

                      Oh :) sorry.
                      What i mean is SIGILL means "what the hell is that instruction" from the cpu.
                      This can happen if compiler setting is slightly off for target.
                      OR
                      you can also have it happen if you write over the end of an array
                      or use a pointer that is not set.
                      Like
                      MyClass *c1; /// dangling pointer
                      c1->somfunc()
                      Then when CPU tries to run the func it sees some random garbage at that location
                      and might say SIGILL.

                      1 Reply Last reply
                      0
                      • A Offline
                        A Offline
                        Amaury
                        wrote on 21 Dec 2016, 08:56 last edited by
                        #40

                        Alright that's clearer ^^
                        So if I need to create a dangling pointer where do I need to declare it ?
                        into the class itself ?

                        M 1 Reply Last reply 21 Dec 2016, 09:01
                        0
                        • A Amaury
                          21 Dec 2016, 08:56

                          Alright that's clearer ^^
                          So if I need to create a dangling pointer where do I need to declare it ?
                          into the class itself ?

                          M Offline
                          M Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on 21 Dec 2016, 09:01 last edited by
                          #41

                          @Amaury
                          Well you can declare it anywhere. :)
                          You want to try crash on purpose`?

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            Amaury
                            wrote on 21 Dec 2016, 09:09 last edited by
                            #42

                            Yes I'd like to look at all my pointers, see if there's somewhere that one is not declared or thing like that.

                            M 1 Reply Last reply 21 Dec 2016, 09:45
                            0
                            • A Amaury
                              21 Dec 2016, 09:09

                              Yes I'd like to look at all my pointers, see if there's somewhere that one is not declared or thing like that.

                              M Offline
                              M Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on 21 Dec 2016, 09:45 last edited by
                              #43

                              @Amaury

                              • one is not declared
                                I assume you mean instantiated or in non japanese
                                new'ed
                                as in
                                ClassX * varX = new X()
                              1 Reply Last reply
                              0
                              • A Offline
                                A Offline
                                Amaury
                                wrote on 21 Dec 2016, 10:06 last edited by Amaury
                                #44

                                Yes that's alright .

                                Btw I got a question , there's some code that I didn't develop myself and I was wondering if there could be an error in some parameters here's the setup :

                                main.cpp

                                
                                static const QString path = "localhost";
                                DataBase MemTampon::Db(path);
                                
                                int main(int argc, char *argv[])
                                {
                                    QApplication a(argc, argv);
                                
                                    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
                                    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
                                
                                    QTranslator *qtTranslator = new QTranslator;
                                        qtTranslator->load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
                                        a.installTranslator(qtTranslator);
                                
                                        MemTampon::Db.aff_Temperature();
                                        MemTampon::Db.aff_Humidite();
                                        MemTampon::Db.aff_Puissance();
                                        MemTampon::Db.aff_Nom_SD();
                                
                                    MainWindow w;
                                    w.show();
                                
                                    return a.exec();
                                
                                }
                                

                                memtampon.h (memtampon.cpp is empty)

                                class MemTampon
                                {
                                public:
                                    static DataBase Db;
                                    static Options Opt;
                                
                                };
                                
                                

                                and Database.cpp

                                DataBase::DataBase(const QString &path)
                                {
                                        db = QSqlDatabase::addDatabase("QMYSQL");
                                        db.setHostName("localhost");
                                        db.setDatabaseName("SmartDevice_DB_V1");
                                        db.setUserName("root");
                                        db.setPassword("root");
                                
                                        if (!db.open())
                                        {
                                           qDebug() << "Error: connection with database fail";
                                        }
                                        else
                                        {
                                           qDebug() << "Database: connection ok";
                                        }
                                }
                                

                                I assume that with the path variable I am able to call the functions that are in my cpp but, it tells me that path is an unused parameter could it possibly give me an error ?

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  mrjj
                                  Lifetime Qt Champion
                                  wrote on 21 Dec 2016, 10:15 last edited by
                                  #45

                                  Its impossible to say
                                  But global variables are good candidate to be check. (always)

                                  I dont think
                                  static const QString path;
                                  can give such error.

                                  1 Reply Last reply
                                  0
                                  • A Offline
                                    A Offline
                                    Amaury
                                    wrote on 21 Dec 2016, 10:32 last edited by
                                    #46

                                    Thank you I was a little disapointed by this function and wasn't able to say if that was correct or not

                                    M K 2 Replies Last reply 21 Dec 2016, 10:33
                                    0
                                    • A Amaury
                                      21 Dec 2016, 10:32

                                      Thank you I was a little disapointed by this function and wasn't able to say if that was correct or not

                                      M Offline
                                      M Offline
                                      mrjj
                                      Lifetime Qt Champion
                                      wrote on 21 Dec 2016, 10:33 last edited by
                                      #47

                                      @Amaury
                                      Well you can always single step it and see if something happens.

                                      1 Reply Last reply
                                      0
                                      • A Amaury
                                        21 Dec 2016, 10:32

                                        Thank you I was a little disapointed by this function and wasn't able to say if that was correct or not

                                        K Offline
                                        K Offline
                                        kshegunov
                                        Moderators
                                        wrote on 21 Dec 2016, 11:08 last edited by
                                        #48

                                        @Amaury
                                        Also you can cut the code that you suspect and see if the problem manifest itself. I wouldn't in principle initialize anything outside of main (like your database) if I can help it, that way I stumble on to less errors in my code, and thus makes for an easier time debugging. Still, my best guess is there some subtle architecture mismatch, so the compiler generates a mostly valid code. However I have no clue how to really test that at present.

                                        Read and abide by the Qt Code of Conduct

                                        1 Reply Last reply
                                        0
                                        • A Offline
                                          A Offline
                                          Amaury
                                          wrote on 21 Dec 2016, 11:08 last edited by Amaury
                                          #49

                                          By using step I can't see any bugs so that's not here.

                                          By the way I'm using the memory check Valgind through QT and when I do a memory check thats starting but I got this message after a few seconds :

                                          Analyzing memory of /home/pi/Desktop/SmartDevice/SauvegardeRASPI/New/build-SmartDevice_QT_V11-Desktop-Debug/SmartDevice_QT_V11
                                              <frame>
                                                <ip>0x485F6F0</ip>
                                                <obj>/usr/lib/arm-linux-gnueabihf/libarmmem.so</obj>
                                              </frame>
                                            </stack>
                                          Analyzing finished.
                                          ** Unknown error **
                                          

                                          I followed the steps here :
                                          http://doc.qt.io/qtcreator/creator-valgrind-overview.html
                                          http://doc.qt.io/qtcreator/creator-analyzer.html

                                          1 Reply Last reply
                                          0

                                          39/59

                                          21 Dec 2016, 08:42

                                          • Login

                                          • Login or register to search.
                                          39 out of 59
                                          • First post
                                            39/59
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved