Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. segmentation fault
Forum Updated to NodeBB v4.3 + New Features

segmentation fault

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
qt 4.8cross-compilingarmv7mqtt
61 Posts 6 Posters 29.0k Views 1 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.
  • MilavM Milav

    Hello,

    I make a qt application for Embedded Custom Board and when i run the Application it gives segmentation fault.

    The application give segmentation fault due to following line.

      mosq->subscribe(mosq->getMID(), topic.data(), 1);
    

    where mosq is define and declare as follow.

    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private:
        qtmosq* mosq = NULL;
        QStringList subed;
        QString currentTopic;
        Ui::MainWindow *ui;
    --------
    --------
    --------
    };
    

    where qtmosq is define as follow..

    #include "QObject"
    #include "mosquittopp.h"
    
    using namespace mosqpp;
    
    class qtmosq : public QObject, public mosquittopp
    {
        Q_OBJECT
    
    public:
        qtmosq(const char *id = NULL, bool clean_session = true) : mosquittopp (id, clean_session) {MID = 0;}
        ~qtmosq() {}
    
        void on_connect(int result)
        {
            if (!result)
            {
                //subscribe(NULL, "$SYS/#", 2);
                emit connected();
            }
            else
                emit connectEnable();
        }
        void on_publish(int id)
        {
            MID++;
            emit messageSent(true);
        }
        void on_subscribe(int mid, int qos_count, const int *granted_qos)
        {
            if (MID != 0)
                emit subscribed();
            MID++;
        }
    ..........
    ..........
    ..........
    
    signals:
        void connected();
        void messageSent(bool);
        void messageReceived(QString);
        void connectEnable();
        void subscribed();
    };
    

    so what is the reason behind for this fault.

    The same application are successfully run on Host Linux PC.

    I have use same mosquitto library in both the test.

    please help me to sort out this problem.

    I have send the reference link at where i used above program.

    Link :- Ref. Link

    Thank you
    Milav Soni

    JonBJ Offline
    JonBJ Offline
    JonB
    wrote on last edited by
    #2

    @Milav said in segmentation fault:

    The application give segmentation fault due to following line.
    mosq->subscribe(mosq->getMID(), topic.data(), 1);

    Little information in your post. But likely one of:

    • mosq is nullptr/bad pointer
    • mosq->subscribe() or mosq->getMID() are raising the SEGV
    • topic.data() is raising SEGV

    You're using some external library code here, so who knows what that might do.
    Can't you run under debugger and get more specific traceback for the SEGV?

    MilavM 1 Reply Last reply
    0
    • JonBJ JonB

      @Milav said in segmentation fault:

      The application give segmentation fault due to following line.
      mosq->subscribe(mosq->getMID(), topic.data(), 1);

      Little information in your post. But likely one of:

      • mosq is nullptr/bad pointer
      • mosq->subscribe() or mosq->getMID() are raising the SEGV
      • topic.data() is raising SEGV

      You're using some external library code here, so who knows what that might do.
      Can't you run under debugger and get more specific traceback for the SEGV?

      MilavM Offline
      MilavM Offline
      Milav
      wrote on last edited by
      #3

      @JonB said in segmentation fault:

      nullptr

      Thank you for your response.

      Debugger is not run, it gives following error.

      The inferior stopped because it received a signal from the Operating System.
      
      Signal name : SIGILL
      Signal meaning : Illegal instruction
      
      

      And i replace NULL value in mosq->getMID() ,
      i replace Topic Name direct instead of topic.data()

      but i face same problem.

      so may be it can be happen by

      1. mosq
      2. mosq->subscribe()

      so, is there any another way to solve this error.

      you tell me mosq is bad pointer, so what is best way to make it good pointer.

      is i used memory allocation in mosq defination?

      please help me to find out this error solution.

      Thank you
      MilaV Soni

      jsulmJ 1 Reply Last reply
      0
      • MilavM Milav

        @JonB said in segmentation fault:

        nullptr

        Thank you for your response.

        Debugger is not run, it gives following error.

        The inferior stopped because it received a signal from the Operating System.
        
        Signal name : SIGILL
        Signal meaning : Illegal instruction
        
        

        And i replace NULL value in mosq->getMID() ,
        i replace Topic Name direct instead of topic.data()

        but i face same problem.

        so may be it can be happen by

        1. mosq
        2. mosq->subscribe()

        so, is there any another way to solve this error.

        you tell me mosq is bad pointer, so what is best way to make it good pointer.

        is i used memory allocation in mosq defination?

        please help me to find out this error solution.

        Thank you
        MilaV Soni

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #4

        @Milav said in segmentation fault:

        you tell me mosq is bad pointer, so what is best way to make it good pointer.

        Create an instance and assign the pointer:

        mosq = new qtmosq();
        

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        MilavM 1 Reply Last reply
        2
        • jsulmJ jsulm

          @Milav said in segmentation fault:

          you tell me mosq is bad pointer, so what is best way to make it good pointer.

          Create an instance and assign the pointer:

          mosq = new qtmosq();
          
          MilavM Offline
          MilavM Offline
          Milav
          wrote on last edited by
          #5

          @jsulm

          i tried with above syntax.

          qtmosq* mosq;
           mosq = new qtmosq(id, true);
          

          but still i am face same segmentation fault error.

          can you please give me best solution for the same.

          jsulmJ 1 Reply Last reply
          0
          • MilavM Milav

            @jsulm

            i tried with above syntax.

            qtmosq* mosq;
             mosq = new qtmosq(id, true);
            

            but still i am face same segmentation fault error.

            can you please give me best solution for the same.

            jsulmJ Offline
            jsulmJ Offline
            jsulm
            Lifetime Qt Champion
            wrote on last edited by
            #6

            @Milav said in segmentation fault:

            but still i am face same segmentation fault error.

            Yes, because you now create a new local variable called mosq which is completely unrelated to mosq in MainWindow! So, the one in MainWindow remains a NULL pointer.
            Remove

            qtmosq* mosq;
            

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            MilavM 1 Reply Last reply
            1
            • jsulmJ jsulm

              @Milav said in segmentation fault:

              but still i am face same segmentation fault error.

              Yes, because you now create a new local variable called mosq which is completely unrelated to mosq in MainWindow! So, the one in MainWindow remains a NULL pointer.
              Remove

              qtmosq* mosq;
              
              MilavM Offline
              MilavM Offline
              Milav
              wrote on last edited by
              #7

              @jsulm

              But than it give error like

              /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:47: error: 'mosq' was not declared in this scope
              

              Can i declare any another place like mainwindow.h?
              i also tried in mainwindow.h

              like following...

              private:
                  qtmosq* mosq;
                  QStringList subed;
                  QString currentTopic;
                  Ui::MainWindow *ui;
              
              

              but it gives same error.

              jsulmJ 1 Reply Last reply
              0
              • MilavM Milav

                @jsulm

                But than it give error like

                /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:47: error: 'mosq' was not declared in this scope
                

                Can i declare any another place like mainwindow.h?
                i also tried in mainwindow.h

                like following...

                private:
                    qtmosq* mosq;
                    QStringList subed;
                    QString currentTopic;
                    Ui::MainWindow *ui;
                
                

                but it gives same error.

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by jsulm
                #8

                @Milav Please show where exactly you're calling

                mosq = new qtmosq();
                

                It must be inside one of the MainWindow methods.

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                MilavM 1 Reply Last reply
                0
                • jsulmJ jsulm

                  @Milav Please show where exactly you're calling

                  mosq = new qtmosq();
                  

                  It must be inside one of the MainWindow methods.

                  MilavM Offline
                  MilavM Offline
                  Milav
                  wrote on last edited by
                  #9

                  @jsulm

                  i call it in mainwindow.cpp file.

                  here i have send the code snip for that portion.

                  mainwindow.cpp

                  MainWindow::MainWindow(QWidget *parent) :
                      QMainWindow(parent),
                      ui(new Ui::MainWindow)
                  {
                      ui->setupUi(this);
                      ui->send->setDisabled(true);
                      ui->message->setDisabled(true);
                      ui->subscribe->setDisabled(true);
                      ui->topic->setDisabled(true);
                  
                      ui->lineIP->setText(QString("a3jkuztr3frwt4-ats.iot.ap-south-1.amazonaws.com"));
                      ui->linePort->setText(QString("8883"));
                  
                      lib_init();
                  
                      connect (ui->connect, SIGNAL(clicked()), this, SLOT(connectPressed()));
                      connect (ui->send, SIGNAL(clicked()), this, SLOT(sendPressed()));
                      connect (ui->subscribe, SIGNAL(clicked()), this, SLOT(subscribePressed()));
                  }
                  
                  void MainWindow::connectPressed()
                  {
                      QByteArray host = ui->lineIP->text().toLocal8Bit();
                      QByteArray id = ui->lineID->text().toLocal8Bit();
                  
                      int port = 0;
                      port = ui->linePort->text().toInt();
                      if (!port)
                      {
                          ui->linePort->clear();
                          return ;
                      }
                      ui->connect->setDisabled(true);
                  
                  
                      mosq = new qtmosq(id, true);
                      int size = sizeof(*mosq);
                      qDebug() << size;
                      connect (mosq, SIGNAL(connectEnable()), this, SLOT(connectEnabled()));
                      connect (mosq, SIGNAL(subscribed()), this ,SLOT(subscribed()));
                      connect (mosq, SIGNAL(connected()), this, SLOT(connected()));
                      connect (mosq, SIGNAL(messageSent(bool)), this, SLOT(setMessageStatus(bool)));
                      connect (mosq, SIGNAL(messageReceived(QString)), this, SLOT(showMessage(QString)));
                      mosq->connect_async(host.data(), port);
                      mosq->loop_start();
                  
                  }
                  

                  mainwindow.h

                  #include <QMainWindow>
                  #include "qtmosq.h"
                  
                  namespace Ui {
                  class MainWindow;
                  }
                  
                  class MainWindow : public QMainWindow
                  {
                      Q_OBJECT
                  
                  public:
                      explicit MainWindow(QWidget *parent = 0);
                      ~MainWindow();
                  
                  private:
                      qtmosq* mosq;
                      QStringList subed;
                      QString currentTopic;
                      Ui::MainWindow *ui;
                  
                  private slots:
                      void setMessageStatus(bool);
                      void connectPressed();
                      void sendPressed();
                      void connectEnabled();
                      void subscribePressed();
                      void subscribed();
                      void connected();
                      void showMessage(QString);
                  };
                  

                  qtmosq.h

                  #ifndef QTMOSQ_H
                  #define QTMOSQ_H
                  
                  #include "QObject"
                  #include "mosquittopp.h"
                  
                  using namespace mosqpp;
                  
                  class qtmosq : public QObject, public mosquittopp
                  {
                      Q_OBJECT
                  
                  public:
                      qtmosq(const char *id = NULL, bool clean_session = true) : mosquittopp (id, clean_session) {MID = 0;}
                      ~qtmosq() {}
                  
                      void on_connect(int result)
                      {
                          if (!result)
                          {
                              //subscribe(NULL, "$SYS/#", 2);
                              emit connected();
                          }
                          else
                              emit connectEnable();
                      }
                      void on_publish(int id)
                      {
                          MID++;
                          emit messageSent(true);
                      }
                      void on_subscribe(int mid, int qos_count, const int *granted_qos)
                      {
                          if (MID != 0)
                              emit subscribed();
                          MID++;
                      }
                      void on_message(const mosquitto_message *message)
                      {
                          if (message->payloadlen)
                          {
                              QString s(message->topic);
                              s += '>';
                              s += (char*) message->payload;
                              emit messageReceived(s);
                          }
                      }
                  
                      int* getMID() {return &MID;}
                  
                  private:
                      int MID;
                  
                  signals:
                      void connected();
                      void messageSent(bool);
                      void messageReceived(QString);
                      void connectEnable();
                      void subscribed();
                  };
                  
                  #endif // QTMOSQ_H
                  
                  

                  here above i send the code for the same.

                  if you get more please tell me.

                  jsulmJ 1 Reply Last reply
                  0
                  • MilavM Milav

                    @jsulm

                    i call it in mainwindow.cpp file.

                    here i have send the code snip for that portion.

                    mainwindow.cpp

                    MainWindow::MainWindow(QWidget *parent) :
                        QMainWindow(parent),
                        ui(new Ui::MainWindow)
                    {
                        ui->setupUi(this);
                        ui->send->setDisabled(true);
                        ui->message->setDisabled(true);
                        ui->subscribe->setDisabled(true);
                        ui->topic->setDisabled(true);
                    
                        ui->lineIP->setText(QString("a3jkuztr3frwt4-ats.iot.ap-south-1.amazonaws.com"));
                        ui->linePort->setText(QString("8883"));
                    
                        lib_init();
                    
                        connect (ui->connect, SIGNAL(clicked()), this, SLOT(connectPressed()));
                        connect (ui->send, SIGNAL(clicked()), this, SLOT(sendPressed()));
                        connect (ui->subscribe, SIGNAL(clicked()), this, SLOT(subscribePressed()));
                    }
                    
                    void MainWindow::connectPressed()
                    {
                        QByteArray host = ui->lineIP->text().toLocal8Bit();
                        QByteArray id = ui->lineID->text().toLocal8Bit();
                    
                        int port = 0;
                        port = ui->linePort->text().toInt();
                        if (!port)
                        {
                            ui->linePort->clear();
                            return ;
                        }
                        ui->connect->setDisabled(true);
                    
                    
                        mosq = new qtmosq(id, true);
                        int size = sizeof(*mosq);
                        qDebug() << size;
                        connect (mosq, SIGNAL(connectEnable()), this, SLOT(connectEnabled()));
                        connect (mosq, SIGNAL(subscribed()), this ,SLOT(subscribed()));
                        connect (mosq, SIGNAL(connected()), this, SLOT(connected()));
                        connect (mosq, SIGNAL(messageSent(bool)), this, SLOT(setMessageStatus(bool)));
                        connect (mosq, SIGNAL(messageReceived(QString)), this, SLOT(showMessage(QString)));
                        mosq->connect_async(host.data(), port);
                        mosq->loop_start();
                    
                    }
                    

                    mainwindow.h

                    #include <QMainWindow>
                    #include "qtmosq.h"
                    
                    namespace Ui {
                    class MainWindow;
                    }
                    
                    class MainWindow : public QMainWindow
                    {
                        Q_OBJECT
                    
                    public:
                        explicit MainWindow(QWidget *parent = 0);
                        ~MainWindow();
                    
                    private:
                        qtmosq* mosq;
                        QStringList subed;
                        QString currentTopic;
                        Ui::MainWindow *ui;
                    
                    private slots:
                        void setMessageStatus(bool);
                        void connectPressed();
                        void sendPressed();
                        void connectEnabled();
                        void subscribePressed();
                        void subscribed();
                        void connected();
                        void showMessage(QString);
                    };
                    

                    qtmosq.h

                    #ifndef QTMOSQ_H
                    #define QTMOSQ_H
                    
                    #include "QObject"
                    #include "mosquittopp.h"
                    
                    using namespace mosqpp;
                    
                    class qtmosq : public QObject, public mosquittopp
                    {
                        Q_OBJECT
                    
                    public:
                        qtmosq(const char *id = NULL, bool clean_session = true) : mosquittopp (id, clean_session) {MID = 0;}
                        ~qtmosq() {}
                    
                        void on_connect(int result)
                        {
                            if (!result)
                            {
                                //subscribe(NULL, "$SYS/#", 2);
                                emit connected();
                            }
                            else
                                emit connectEnable();
                        }
                        void on_publish(int id)
                        {
                            MID++;
                            emit messageSent(true);
                        }
                        void on_subscribe(int mid, int qos_count, const int *granted_qos)
                        {
                            if (MID != 0)
                                emit subscribed();
                            MID++;
                        }
                        void on_message(const mosquitto_message *message)
                        {
                            if (message->payloadlen)
                            {
                                QString s(message->topic);
                                s += '>';
                                s += (char*) message->payload;
                                emit messageReceived(s);
                            }
                        }
                    
                        int* getMID() {return &MID;}
                    
                    private:
                        int MID;
                    
                    signals:
                        void connected();
                        void messageSent(bool);
                        void messageReceived(QString);
                        void connectEnable();
                        void subscribed();
                    };
                    
                    #endif // QTMOSQ_H
                    
                    

                    here above i send the code for the same.

                    if you get more please tell me.

                    jsulmJ Offline
                    jsulmJ Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on last edited by jsulm
                    #10

                    @Milav So, you get that error here in MainWindow:

                    ui->connect->setDisabled(true); 
                    mosq = new qtmosq(id, true); // Is it here?
                    int size = sizeof(*mosq);
                    

                    ?
                    It should work.
                    Are there any other warnings or errors?
                    Try to do a complete rebuild: delete build directory, run qmake and build.

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    MilavM 2 Replies Last reply
                    0
                    • jsulmJ jsulm

                      @Milav So, you get that error here in MainWindow:

                      ui->connect->setDisabled(true); 
                      mosq = new qtmosq(id, true); // Is it here?
                      int size = sizeof(*mosq);
                      

                      ?
                      It should work.
                      Are there any other warnings or errors?
                      Try to do a complete rebuild: delete build directory, run qmake and build.

                      MilavM Offline
                      MilavM Offline
                      Milav
                      wrote on last edited by
                      #11

                      @jsulm

                      when i build the project it give me only warning like follow.

                      /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/qtmosq.h:14: warning: 'mosqpp::mosquittopp::mosquittopp(const char*, bool)' is deprecated (declared at ../../../../CC_Lib/mosquitto/phytec_wega_build_websockets/usr/local/include/mosquittopp.h:94) [-Wdeprecated-declarations]
                      
                      /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:57: warning: 'int mosqpp::mosquittopp::connect_async(const char*, int, int)' is deprecated (declared at ../../../../CC_Lib/mosquitto/phytec_wega_build_websockets/usr/local/include/mosquittopp.h:103) [-Wdeprecated-declarations]
                      
                      /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:80: warning: 'int mosqpp::mosquittopp::subscribe(int*, const char*, int)' is deprecated (declared at ../../../../CC_Lib/mosquitto/phytec_wega_build_websockets/usr/local/include/mosquittopp.h:110) [-Wdeprecated-declarations]
                      

                      but i face segmentation fault error when i run that project, an i found the line at where i face segmentation fault.

                      it is ...

                      mosq->subscribe(NULL, "sensors/temprature", 1); // Segmentation falut
                      
                      M 1 Reply Last reply
                      0
                      • jsulmJ jsulm

                        @Milav So, you get that error here in MainWindow:

                        ui->connect->setDisabled(true); 
                        mosq = new qtmosq(id, true); // Is it here?
                        int size = sizeof(*mosq);
                        

                        ?
                        It should work.
                        Are there any other warnings or errors?
                        Try to do a complete rebuild: delete build directory, run qmake and build.

                        MilavM Offline
                        MilavM Offline
                        Milav
                        wrote on last edited by
                        #12

                        @jsulm

                        Hello

                        Here i have send the link at where i download the example.

                        Reference link

                        jsulmJ 1 Reply Last reply
                        0
                        • MilavM Milav

                          @jsulm

                          Hello

                          Here i have send the link at where i download the example.

                          Reference link

                          jsulmJ Offline
                          jsulmJ Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on last edited by
                          #13

                          @Milav That example does exactly what I suggested you to do:

                          ui->connect->setDisabled(true);
                          
                          mosq = new qtmosq(id, false); // HERE
                          connect (mosq, SIGNAL(connectEnable()), this, SLOT(connectEnabled()));
                          

                          Did you try to build and run this example? If so - does it work?

                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                          MilavM 1 Reply Last reply
                          0
                          • jsulmJ jsulm

                            @Milav That example does exactly what I suggested you to do:

                            ui->connect->setDisabled(true);
                            
                            mosq = new qtmosq(id, false); // HERE
                            connect (mosq, SIGNAL(connectEnable()), this, SLOT(connectEnabled()));
                            

                            Did you try to build and run this example? If so - does it work?

                            MilavM Offline
                            MilavM Offline
                            Milav
                            wrote on last edited by
                            #14

                            @jsulm

                            Yes i delete the build directory and again i rebuild the whole project but i couldn't run the example. it is not work.

                            jsulmJ 1 Reply Last reply
                            0
                            • MilavM Milav

                              @jsulm

                              Yes i delete the build directory and again i rebuild the whole project but i couldn't run the example. it is not work.

                              jsulmJ Offline
                              jsulmJ Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on last edited by
                              #15

                              @Milav said in segmentation fault:

                              it is not work

                              What exactly does this mean? Doesn't build? Crashes? Does not do what it should? ...?

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              MilavM 1 Reply Last reply
                              0
                              • jsulmJ jsulm

                                @Milav said in segmentation fault:

                                it is not work

                                What exactly does this mean? Doesn't build? Crashes? Does not do what it should? ...?

                                MilavM Offline
                                MilavM Offline
                                Milav
                                wrote on last edited by
                                #16

                                @jsulm

                                it means build successful.

                                but it is not run, it is crashes application.

                                means while running the application, the application are crash.

                                with following error.

                                "segmentation fault"

                                and i debug the application via qDebug(), the application are crash on following line of code.

                                mosq->subscribe(NULL, "sensors/temprature", 1); // Segmentation falut
                                
                                J.HilkJ 1 Reply Last reply
                                0
                                • MilavM Milav

                                  @jsulm

                                  it means build successful.

                                  but it is not run, it is crashes application.

                                  means while running the application, the application are crash.

                                  with following error.

                                  "segmentation fault"

                                  and i debug the application via qDebug(), the application are crash on following line of code.

                                  mosq->subscribe(NULL, "sensors/temprature", 1); // Segmentation falut
                                  
                                  J.HilkJ Offline
                                  J.HilkJ Offline
                                  J.Hilk
                                  Moderators
                                  wrote on last edited by
                                  #17

                                  @Milav well, did you press connect before you pressed subscribe?

                                  If not it will crash...


                                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                  Q: What's that?
                                  A: It's blue light.
                                  Q: What does it do?
                                  A: It turns blue.

                                  MilavM 1 Reply Last reply
                                  0
                                  • J.HilkJ J.Hilk

                                    @Milav well, did you press connect before you pressed subscribe?

                                    If not it will crash...

                                    MilavM Offline
                                    MilavM Offline
                                    Milav
                                    wrote on last edited by
                                    #18

                                    @J-Hilk

                                    I press first Connect button and than after i press subscribed button.

                                    but it is crash...

                                    jsulmJ 1 Reply Last reply
                                    0
                                    • MilavM Milav

                                      @jsulm

                                      when i build the project it give me only warning like follow.

                                      /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/qtmosq.h:14: warning: 'mosqpp::mosquittopp::mosquittopp(const char*, bool)' is deprecated (declared at ../../../../CC_Lib/mosquitto/phytec_wega_build_websockets/usr/local/include/mosquittopp.h:94) [-Wdeprecated-declarations]
                                      
                                      /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:57: warning: 'int mosqpp::mosquittopp::connect_async(const char*, int, int)' is deprecated (declared at ../../../../CC_Lib/mosquitto/phytec_wega_build_websockets/usr/local/include/mosquittopp.h:103) [-Wdeprecated-declarations]
                                      
                                      /home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:80: warning: 'int mosqpp::mosquittopp::subscribe(int*, const char*, int)' is deprecated (declared at ../../../../CC_Lib/mosquitto/phytec_wega_build_websockets/usr/local/include/mosquittopp.h:110) [-Wdeprecated-declarations]
                                      

                                      but i face segmentation fault error when i run that project, an i found the line at where i face segmentation fault.

                                      it is ...

                                      mosq->subscribe(NULL, "sensors/temprature", 1); // Segmentation falut
                                      
                                      M Offline
                                      M Offline
                                      mvuori
                                      wrote on last edited by
                                      #19

                                      If temprature is supposed to be temperature, this is a bug:
                                      mosq->subscribe(NULL, "sensors/temprature", 1);

                                      MilavM 1 Reply Last reply
                                      0
                                      • MilavM Milav

                                        @J-Hilk

                                        I press first Connect button and than after i press subscribed button.

                                        but it is crash...

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #20

                                        @Milav Did you debug to see whether mosq is not a nullptr? If it's not please provide stack trace after crash.
                                        Also, in connectPressed it does a return if port is not set - is it set if you press connect?
                                        You should really run through debugger...

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        MilavM 1 Reply Last reply
                                        0
                                        • jsulmJ jsulm

                                          @Milav Did you debug to see whether mosq is not a nullptr? If it's not please provide stack trace after crash.
                                          Also, in connectPressed it does a return if port is not set - is it set if you press connect?
                                          You should really run through debugger...

                                          MilavM Offline
                                          MilavM Offline
                                          Milav
                                          wrote on last edited by
                                          #21

                                          @jsulm

                                          i debug the size of mosq pointer through following code.

                                           int size = sizeof(*mosq);
                                              qDebug() << size;
                                          

                                          and output is 20;

                                          and in connectpressed button slot are run succesfully.

                                          port value are shown correctly.

                                          when i run debugger it shows following error.

                                          The inferior stopped because it received a signal from the Operating System.
                                          
                                          Signal name : 
                                          SIGILL
                                          Signal meaning : 
                                          Illegal instruction
                                          
                                          

                                          hope you got my point.

                                          jsulmJ 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