Help : Segmentation fault when using a 3rd library
-
wrote on 22 Jan 2014, 03:04 last edited by
I am a windows user and new to Qt with mingw32. Now I'm trying to use a library 'smile' (which builds up a bayesian network and then do references), I have put everything including .a file and .h file in the root directory and added them in the .pro file (though I don't know whether I have done it right):
@QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = trysmile
TEMPLATE = appSOURCES += main.cpp
widget.cpp
buildnetwork.cpp
filecommu.cpp
inference.cpp
para_learn.cpp
stru_learn.cppHEADERS += widget.h
libheader.hFORMS += widget.ui
DEFINES += NDEBUG
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CFLAGS_RELEASE += -O3
QMAKE_CFLAGS_RELEASE += -ffast-math
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE += -O3
QMAKE_CXXFLAGS_RELEASE += -ffast-math
QMAKE_CFLAGS_DEBUG -= -O2
QMAKE_CFLAGS_DEBUG += -O3
QMAKE_CFLAGS_DEBUG += -ffast-math
QMAKE_CXXFLAGS_DEBUG -= -O2
QMAKE_CXXFLAGS_DEBUG += -O3
QMAKE_CXXFLAGS_DEBUG += -ffast-mathLIBS += -L$$PWD/ -lsmile
PRE_TARGETDEPS += $$PWD/libsmile.a
LIBS += -L$$PWD/ -lsmilearn
PRE_TARGETDEPS += $$PWD/libsmilearn.a
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
@
I included "smile.h" and was trying to run a tutorial program, but I received a signal 'SIGSEGV' when trying to declare a new variable.BTW the compiler tells me that there are many unused parameters in my program. Is it normal for a well-included library?
-
wrote on 22 Jan 2014, 03:21 last edited by
One more thing, I saw an instruction on the smile website:
Distributions built with gcc use the following compiler switches:
-O3 -DNDEBUG -ffast-mathDoes anyone know how to add these codes?
-
Hi,
What exact error are you getting ?
@DEFINES += NDEBUG@
-
wrote on 22 Jan 2014, 10:47 last edited by
Message I received:
The inferior stopped becaquse it received a signal from the Operating System.
Signal name: SIGSEGV
Signal meaning: Segmentation faultI was using a tutorial code, trying to create a new object, but was stopped by Qt Creator.
-
You should run it using a debugger, this would tell you where it happens
-
wrote on 23 Jan 2014, 15:31 last edited by
Thany you for your reply. I'm new to Qt and I don't know what is a degubber. Now I am using Qt Creator and press F5 to debug my project. The debugging process stops at the line where I am going to declare a new object contained in the library.
-
Then I suppose you are also new at programming ?
Can you show the code ?
-
wrote on 25 Jan 2014, 07:42 last edited by
I have some basic knowledge in C++ programming and one semester's course in data structure and algorithm, but I'm ignorant in interface development.
I downloaded my library on this website:
http://genie.sis.pitt.edu/index.php/downloads
followed tutorial on this website:
http://genie.sis.pitt.edu/wiki/SMILE_Documentation
and wrote my own code:
@#include "widget.h"
#include <QApplication>
#include "smile.h"int main(int argc, char *argv[])
{
DSL_network myNetwork;
QApplication a(argc, argv);
Widget w;
w.show();return a.exec();
}
@Debugging process stopped at
@DSL_network myNetwork;@ -
And what error are you getting ?
-
wrote on 27 Jan 2014, 12:45 last edited by
A message box with a title "Signal received", reading
The inferior stopped because it received a signal from the Operating System.
Signal name: SIGSEGV
Signal meaning: Segmentatio fault -
Since you are using MinGW, your should already have a debugger then just click on the other green arrow, then one with the little bug, you should get more information
-
wrote on 28 Jan 2014, 02:01 last edited by
Application Output:
Debugging starts
can't find linker symbol for virtual table for 'QApplication' valueThere are many warnings. Some read 'ignoring #pragma comment' while others 'unused parameter'. What is the problem?
-
Did you download the MinGW version ? If so, it's been compiled with MinGW 4.6.2 which is not compatible with 4.8
-
wrote on 29 Jan 2014, 01:33 last edited by
Oh, I am now using Qt creator 5.2.0 and MinGW4.8. How can I reduce MinGW to a 4.6.2 version?
-
You would need to install it by hand and also recompile Qt with it
-
However, the download page also mention that you can request a build, so you could try to ask them about a version using MinGW 4.8
-
wrote on 29 Jan 2014, 11:34 last edited by
Thx for your reply! I have downloaded Mingw32 4.6.2, but I want to ask how to recompile Qt with it.
-
Just follow the "documentation":http://qt-project.org/doc/qt-5/windows-building.html
However, I would recommend trying to ask a build for MinGW 4.8
-
wrote on 1 Feb 2014, 12:55 last edited by
I've tried to follow the instruction, but it is complex for me. I just copied and pasted MinGW4.6.2 in the directory, and compiled the program. Now it stops at the very beginning and the Application Output window says
Debugging starts
(Internal error: pc 0x54f558 in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f615 in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f616 in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f615 in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f615 in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x406a80 in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adc in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f615 in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f558 in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f615 in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f616 in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f615 in read in psymtab, but not in symtab.)
(Internal error: pc 0x54f615 in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x406a80 in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adc in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.)
(Internal error: pc 0x406adb in read in psymtab, but not in symtab.) -
Did you also compile Qt with that version of MinGW ?
10/20