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.2k 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 Offline
    A Offline
    Amaury
    wrote on 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
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on 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 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

        mrjjM kshegunovK 2 Replies Last reply
        0
        • A Amaury

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

          mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #47

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

          1 Reply Last reply
          0
          • A Amaury

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

            kshegunovK Offline
            kshegunovK Offline
            kshegunov
            Moderators
            wrote on 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 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
              • A Offline
                A Offline
                Amaury
                wrote on last edited by
                #50

                @kshegunov
                If I don't declare it there where could I do it ? As said before that's not a code that I did myself and I don't really understand the way that it works (how the "path" is used thorugh the different pages ...

                kshegunovK 1 Reply Last reply
                0
                • A Amaury

                  @kshegunov
                  If I don't declare it there where could I do it ? As said before that's not a code that I did myself and I don't really understand the way that it works (how the "path" is used thorugh the different pages ...

                  kshegunovK Offline
                  kshegunovK Offline
                  kshegunov
                  Moderators
                  wrote on last edited by
                  #51

                  @Amaury said in Problem with disassembler and SIGILL signal:

                  If I don't declare it there where could I do it

                  From the looks of it you can safely put the db initialization in main (after you've created the application object). As for the string, it's okay to leave it as a global.

                  Read and abide by the Qt Code of Conduct

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    Amaury
                    wrote on last edited by Amaury
                    #52

                    @kshegunov

                    I tried like that but that doesn't work got a qualified-id in declaration before '(' token error

                    static const QString path = "localhost";
                    
                    int main(int argc, char *argv[])
                    {
                        QApplication a(argc, argv);
                        DataBase MemTampon::Db(path);
                    .
                    .
                    .
                    }
                    

                    Even with the string inside the main ...

                    kshegunovK 1 Reply Last reply
                    0
                    • A Amaury

                      @kshegunov

                      I tried like that but that doesn't work got a qualified-id in declaration before '(' token error

                      static const QString path = "localhost";
                      
                      int main(int argc, char *argv[])
                      {
                          QApplication a(argc, argv);
                          DataBase MemTampon::Db(path);
                      .
                      .
                      .
                      }
                      

                      Even with the string inside the main ...

                      kshegunovK Offline
                      kshegunovK Offline
                      kshegunov
                      Moderators
                      wrote on last edited by
                      #53

                      It should be:

                      DataBase Db(path);
                      

                      You're not initializing a static anymore.

                      Read and abide by the Qt Code of Conduct

                      1 Reply Last reply
                      0
                      • A Offline
                        A Offline
                        Amaury
                        wrote on last edited by Amaury
                        #54

                        The problem is if I don't use a static I can't do the calls for my other functions in my Database class..

                        const QString path = "localhost";
                        
                        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);
                        
                                DataBase Db(path);
                                DataBase::Db.aff_Temperature();
                                DataBase::Db.aff_Humidite();
                                DataBase::Db.aff_Puissance();
                                DataBase::Db.aff_Nom_SD();
                        
                            MainWindow w;
                            w.show();
                        
                        
                            return a.exec();
                        }
                        

                        (By the way I've delete the MemTampon that I agree was useless ... )

                        EDIT : My bad I'm dumb I think ^^ for the main it's alright just had to cut out the "DataBase::"

                        But I'm doing reference to the "Db" inside another page but the call doesn't work...

                         if (Db.isOpen())
                            {
                        
                                Temp  = Db.aff_Temperature();
                                Humid  = Db.aff_Humidite();
                                Puiss  = Db.aff_Puissance();
                                Nom = Db.aff_Nom_SD();
                                Axe_X = Db.aff_AxeX();
                                Axe_Y = Db.aff_AxeY();
                                Axe_Z = Db.aff_AxeZ();
                        
                        
                        kshegunovK 1 Reply Last reply
                        0
                        • A Amaury

                          The problem is if I don't use a static I can't do the calls for my other functions in my Database class..

                          const QString path = "localhost";
                          
                          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);
                          
                                  DataBase Db(path);
                                  DataBase::Db.aff_Temperature();
                                  DataBase::Db.aff_Humidite();
                                  DataBase::Db.aff_Puissance();
                                  DataBase::Db.aff_Nom_SD();
                          
                              MainWindow w;
                              w.show();
                          
                          
                              return a.exec();
                          }
                          

                          (By the way I've delete the MemTampon that I agree was useless ... )

                          EDIT : My bad I'm dumb I think ^^ for the main it's alright just had to cut out the "DataBase::"

                          But I'm doing reference to the "Db" inside another page but the call doesn't work...

                           if (Db.isOpen())
                              {
                          
                                  Temp  = Db.aff_Temperature();
                                  Humid  = Db.aff_Humidite();
                                  Puiss  = Db.aff_Puissance();
                                  Nom = Db.aff_Nom_SD();
                                  Axe_X = Db.aff_AxeX();
                                  Axe_Y = Db.aff_AxeY();
                                  Axe_Z = Db.aff_AxeZ();
                          
                          
                          kshegunovK Offline
                          kshegunovK Offline
                          kshegunov
                          Moderators
                          wrote on last edited by kshegunov
                          #55

                          @Amaury said in Problem with disassembler and SIGILL signal:

                          if I don't use a static I can't do the calls for my other functions in my Database class..

                          Why not, you can always get the opened database (it's default named) by calling QSqlDatabase db = QSqlDatabase::database(). The QSqlDatabase class already keeps track of the opened connections for you.

                          Read and abide by the Qt Code of Conduct

                          1 Reply Last reply
                          1
                          • A Offline
                            A Offline
                            Amaury
                            wrote on last edited by Amaury
                            #56

                            So what you mean is that for now my function Database Db(path) is just to specify if the connection is opened or not ?

                            kshegunovK 1 Reply Last reply
                            0
                            • A Amaury

                              So what you mean is that for now my function Database Db(path) is just to specify if the connection is opened or not ?

                              kshegunovK Offline
                              kshegunovK Offline
                              kshegunov
                              Moderators
                              wrote on last edited by
                              #57

                              @Amaury
                              Eh, yes I suppose you could say that, currently in the constructor of your object you open the database:

                              db = QSqlDatabase::addDatabase("QMYSQL");
                              db.setHostName("localhost");
                              // ...
                              

                              so it serves as database initialization. You can do that in main() too, but that's another point. After the constructor's run, you can get the opened database the way I mentioned in my previous post. In principle it's not really needed to have a "database manager" with Qt, because the QSqlDatabase class already keeps track of the connections, as mentioned. You can look up the two functions QSqlDatabase::addDatabase and QSqlDatabase::database in the docs and I think it'll become clear from the examples there.

                              Read and abide by the Qt Code of Conduct

                              1 Reply Last reply
                              1
                              • A Offline
                                A Offline
                                Amaury
                                wrote on last edited by
                                #58

                                Alright I'm going to check and change some things to see if that deletes the Sigill signal (hope so) I come back to give you feedback.

                                Thanks !

                                1 Reply Last reply
                                0
                                • A Offline
                                  A Offline
                                  Amaury
                                  wrote on last edited by
                                  #59

                                  Hi there ,

                                  I'm back again for some feedback , I changed the way I use my Database, I'm still connecting the same way, But all my functions that were in my class get swith into the only page that need those instructions .
                                  That Way I Just connect through my databse page and just make a Signal Slot use when I need it.

                                  That said , my problem isn't solve for now I though maybe it was the Databse but seems not , maybe it's my refresh timer for my UI that creates crashes , anyway I'm still triying to find the problem..

                                  If anyone could give me a clue for Valgrind to work , it's crashing a few seconds after starting the analysis and I just have the message that I post earlier.

                                  That's a big post thank's for help and if I can't get in touch happy Christmas holidays.

                                  1 Reply Last reply
                                  0

                                  • Login

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