segmentation fault
-
when i execute "qDebug() << mosq;" it gives following output.
qtmosq(0xac50b0)
how i see stack trace in qt?
can you please explore me more about stack trace?
when i execute "qDebug() << mosq;" it gives following output.
qtmosq(0xac50b0)I'm not sure this is actually trying to deference the pointer, it may just print its value. I would try something like
qDebug() << mosq->something;
, wheresomething
is some field you know is supposed to exist & be valid in aqtmosq
. Or tryqDebug() << *mosq
(note the*
)?how i see stack trace in qt?
can you please explore me more about stack trace?I don't know how you run in your "Embedded Custom Board", but can you run the app from inside a debugger? then when it seg faults you will see a "stack trace" in the debugger showing the call stack when the fault occurred.
-
when i execute "qDebug() << mosq;" it gives following output.
qtmosq(0xac50b0)I'm not sure this is actually trying to deference the pointer, it may just print its value. I would try something like
qDebug() << mosq->something;
, wheresomething
is some field you know is supposed to exist & be valid in aqtmosq
. Or tryqDebug() << *mosq
(note the*
)?how i see stack trace in qt?
can you please explore me more about stack trace?I don't know how you run in your "Embedded Custom Board", but can you run the app from inside a debugger? then when it seg faults you will see a "stack trace" in the debugger showing the call stack when the fault occurred.
@JonB said in segmentation fault:
I'm not sure this is actually trying to deference the pointer
It does not, but I wanted to see its value :-)
Looks like it's not NULL. -
@JonB said in segmentation fault:
I'm not sure this is actually trying to deference the pointer
It does not, but I wanted to see its value :-)
Looks like it's not NULL. -
when i execute "qDebug() << mosq;" it gives following output.
qtmosq(0xac50b0)I'm not sure this is actually trying to deference the pointer, it may just print its value. I would try something like
qDebug() << mosq->something;
, wheresomething
is some field you know is supposed to exist & be valid in aqtmosq
. Or tryqDebug() << *mosq
(note the*
)?how i see stack trace in qt?
can you please explore me more about stack trace?I don't know how you run in your "Embedded Custom Board", but can you run the app from inside a debugger? then when it seg faults you will see a "stack trace" in the debugger showing the call stack when the fault occurred.
@JonB said in segmentation fault:
qDebug() << *mosq
gives error :-
/home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:54: note: 'qtmosq' is not derived from 'const QFlags<T>'
@JonB said in segmentation fault:
qDebug() << mosq->something
i tried following things and it output are '0'.
- qDebug() << mosq->connect_async(host.data(), port);
- qDebug() << mosq->loop_start();
- qDebug() << mosq->subscribe(NULL, "sensors/temprature", 1);
the output of all above command are zero (0).
@JonB said in segmentation fault:
app from inside a debugge
i am not able to run the debugger because it gives following error.
The inferior stopped because it received a signal from the Operating System. Signal name : SIGILL Signal meaning : Illegal instruction
hope you got your answer.
-
@JonB said in segmentation fault:
@jsulm
Indeedy :) So now let's see how qDebug() << *mosq fares?sorry the error is as following not previous one.
/home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:54: error: no match for 'operator<<' in 'qDebug()() << *((MainWindow*)this)->MainWindow::mosq'
-
@JonB said in segmentation fault:
qDebug() << *mosq
gives error :-
/home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:54: note: 'qtmosq' is not derived from 'const QFlags<T>'
@JonB said in segmentation fault:
qDebug() << mosq->something
i tried following things and it output are '0'.
- qDebug() << mosq->connect_async(host.data(), port);
- qDebug() << mosq->loop_start();
- qDebug() << mosq->subscribe(NULL, "sensors/temprature", 1);
the output of all above command are zero (0).
@JonB said in segmentation fault:
app from inside a debugge
i am not able to run the debugger because it gives following error.
The inferior stopped because it received a signal from the Operating System. Signal name : SIGILL Signal meaning : Illegal instruction
hope you got your answer.
@Milav
First you wroteand i debug the application via qDebug(), the application are crash on following line of code.
mosq->subscribe(NULL, "sensors/temprature", 1); // Segmentation falutNow you write
qDebug() << mosq->subscribe(NULL, "sensors/temprature", 1);
the output of all above command are zero (0).This is a problem if you say sometimes it seg faults and sometimes it returns 0? Is that the case? You need to be very specific in your answers!
i am not able to run the debugger because it gives following error.
That is indeed a big problem. There is little for us to answer from what you have posted. Is a debugger supposed to work for your "Embedded Custom Board" (I don't know about this)? You really need one. Otherwise you are likely to have to try printing out all sorts of information in your code to try to diagnose what is going on....
-
@JonB said in segmentation fault:
@jsulm
Indeedy :) So now let's see how qDebug() << *mosq fares?sorry the error is as following not previous one.
/home/tdp0009/Teq_Projects/Aug_2019/HMI/Firmware/QT/12_oct_hmi/qt-mosquitto-master/mainwindow.cpp:54: error: no match for 'operator<<' in 'qDebug()() << *((MainWindow*)this)->MainWindow::mosq'
-
@Milav Forget about
qDebug() << *mosq;
it's only going to work if operator<< was overloaded for that class, apparently it isn't, but this is not an issue.
Can you try to run the app directly with gdb?Can you try to run the app directly with gdb?
I know this is not the place for a long explanation. But when OP says
I make a qt application for Embedded Custom Board
I thought (knowing nothing about this) it meant he is doing something like )cross-)compiling of whatever but the app runs "on the board", so he might not have/be able to use a debugger? Can you explain to me in one sentence what the OP's enthronement actually is, I'd like to have the vaguest understanding....
-
@Milav Forget about
qDebug() << *mosq;
it's only going to work if operator<< was overloaded for that class, apparently it isn't, but this is not an issue.
Can you try to run the app directly with gdb?@jsulm said in segmentation fault:
Forget about
qDebug() << *mosq;okay thank you.
@jsulm said in segmentation fault:
Can you try to run the app directly with gdb?
yes i tried but , debugger give me error,
the error is shown in below image.
-
@jsulm said in segmentation fault:
Forget about
qDebug() << *mosq;okay thank you.
@jsulm said in segmentation fault:
Can you try to run the app directly with gdb?
yes i tried but , debugger give me error,
the error is shown in below image.
-
@jsulm said in segmentation fault:
Forget about
qDebug() << *mosq;okay thank you.
@jsulm said in segmentation fault:
Can you try to run the app directly with gdb?
yes i tried but , debugger give me error,
the error is shown in below image.
-
-
@JonB said in segmentation fault:
app directly in gdb (from the command-line)
actually, i am new in this.
give me some time i explore it and give you answer.
i don't know how i run app in gdb.
-
- Open Command Prompt/terminal/shell.
cd
to where your executable is.gdb <your-executable>
-
but in gdb how i see "stack trace" ?
what classes i use from List of classes of commands?
please tell me
-
i enter the gdb command as following .
tdp0009@tdp0009-desktop:~/Teq_Projects/Aug_2019/HMI/Firmware/QT/Desktop_Application/11-oct/qt-mqtt-example/build-qt-mosquitto-Desktop-Release$ gdb qt-mosquitto GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from qt-mosquitto...(no debugging symbols found)...done. (gdb) bt No stack. (gdb) No stack. (gdb)
-
i enter the gdb command as following .
tdp0009@tdp0009-desktop:~/Teq_Projects/Aug_2019/HMI/Firmware/QT/Desktop_Application/11-oct/qt-mqtt-example/build-qt-mosquitto-Desktop-Release$ gdb qt-mosquitto GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from qt-mosquitto...(no debugging symbols found)...done. (gdb) bt No stack. (gdb) No stack. (gdb)
-
@Milav
Typerun
first to run your program! Then if it crashes typebt
. You could typeman gdb
from the command-line, orhelp
from withingdb
like the message states. We had to learn to do that....thank you for your help.
i run gdb from development host machine.
here i send the output of that.
tdp0009@tdp0009-desktop:~/Teq_Projects/Aug_2019/HMI/Phytec_Toolchain/arm-cortexa8-linux-gnueabihf/bin$ ./arm-cortexa8-linux-gnueabihf-gdb GNU gdb (GDB) 7.5 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-host-linux-gnu --target=arm-cortexa8-linux-gnueabihf". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. (gdb) target extended 192.168.5.52:2345 Remote debugging using 192.168.5.52:2345 (gdb) set remote exec-file /opt/milav/qt-mosquitto (gdb) run Starting program: Program received signal SIGILL, Illegal instruction. 0x404df208 in ?? () (gdb) bt #0 0x404df208 in ?? () Cannot access memory at address 0x0 #1 0x404092c0 in ?? () Cannot access memory at address 0x0 #2 0x404092c0 in ?? () Cannot access memory at address 0x0 Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb)
i think you got what you want.
looking forward hearing from you.
-
thank you for your help.
i run gdb from development host machine.
here i send the output of that.
tdp0009@tdp0009-desktop:~/Teq_Projects/Aug_2019/HMI/Phytec_Toolchain/arm-cortexa8-linux-gnueabihf/bin$ ./arm-cortexa8-linux-gnueabihf-gdb GNU gdb (GDB) 7.5 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-host-linux-gnu --target=arm-cortexa8-linux-gnueabihf". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. (gdb) target extended 192.168.5.52:2345 Remote debugging using 192.168.5.52:2345 (gdb) set remote exec-file /opt/milav/qt-mosquitto (gdb) run Starting program: Program received signal SIGILL, Illegal instruction. 0x404df208 in ?? () (gdb) bt #0 0x404df208 in ?? () Cannot access memory at address 0x0 #1 0x404092c0 in ?? () Cannot access memory at address 0x0 #2 0x404092c0 in ?? () Cannot access memory at address 0x0 Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb)
i think you got what you want.
looking forward hearing from you.
@Milav said in segmentation fault:
i think you got what you want
Not really.
Did you build the app in debug mode?