QCustomplot - seqfault



  • Unter Linux Mint 13, Qt 5.2 scheint bei mir nicht mal mehr das Beispielprogramm zu funktionieren:

    #include <QApplication>
    #include <QMainWindow>
    #include <qcustomplot.h>
    
    int main(int argc, char *argv[])
    {
      QApplication a(argc, argv);
      QMainWindow window;
    
      // setup customPlot as central widget of window:
      QCustomPlot customPlot;
      window.setCentralWidget(&customPlot);
    
      // create plot (from quadratic plot example):
      QVector<double> x(101), y(101);
      for (int i=0; i<101; ++i)
      {
        x[i] = i/50.0 - 1;
        y[i] = x[i]*x[i];
      }
      customPlot.addGraph();
      customPlot.graph(0)->setData(x, y);
      customPlot.xAxis->setLabel("x");
      customPlot.yAxis->setLabel("y");
      customPlot.rescaleAxes();
    
      window.setGeometry(100, 100, 500, 400);
      window.show();
      return a.exec();
    }
    

    Pro file

    #-------------------------------------------------
    #
    # Project created by QtCreator 2016-04-20T11:33:06
    #
    #-------------------------------------------------
    
    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
    
    TARGET = Plot
    TEMPLATE = app
    
    DEFINES += QCUSTOMPLOT_COMPILE_LIBRARY
    
    SOURCES += main.cpp
    HEADERS  +=
    
    FORMS    +=
    
    unix|win32: LIBS += -lqcustomplot
    

    Kompiliert einwandfrei, aber beim Ausführen erhalte ich einen segmentation-fault.

    Kann das jemand ausprobieren?



  • Ausprobieren kann ich das nicht, weil ich weder deine Library noch das Projekt, das sie erzeugt, habe. Der Code im main funktioniert bei mir aber einwandfrei.
    Warum benutzt du nicht die .pro Datei, die zum Beispiel gehört? Da steht zum Beispiel

    DEFINES += QCUSTOMPLOT_USE_LIBRARY
    

    statt

    DEFINES += QCUSTOMPLOT_COMPILE_LIBRARY
    

    Klingt auch vernünftiger, oder?



  • Da habe ich jetzt versehentlich die falsche .pro Datei kopiert.

    Ich benutze schon die mirgelieferte. Ich habe jetzt extra nochmal neu kompiliert und bekomme immer noch einen segfault 😞


  • Mod

    Wo segfaulted es denn?
    Was sagt der Debugger?



  • Zum ersten: Das pro-File das ich gepostet habe, war das falsche. Ich nutze das mitgelieferte.

    Es sieht so aus, als ob die bei Mint 17.3 mitgelieftere .so-Datei nicht kompatibel wäre. Nutze ich die selbst kompilierten Bibliotheken, klappt alles.

    Aber was sagt der Debugger... gute Frage:

    Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
    
    Program received signal SIGSEGV, Segmentation fault.
    0x00007ffff5637dfc in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
    
    (gdb) backtrace
    #0  0x00007ffff5637dfc in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4
    #1  0x00007ffff7dea13a in call_init (l=<optimized out>, argc=argc@entry=1, 
        argv=argv@entry=0x7fffffffe078, env=env@entry=0x7fffffffe088)
        at dl-init.c:78
    #2  0x00007ffff7dea223 in call_init (env=<optimized out>, 
        argv=<optimized out>, argc=<optimized out>, l=<optimized out>)
        at dl-init.c:36
    #3  _dl_init (main_map=0x7ffff7ffe1c8, argc=1, argv=0x7fffffffe078, 
        env=0x7fffffffe088) at dl-init.c:126
    #4  0x00007ffff7ddb30a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
    #5  0x0000000000000001 in ?? ()
    #6  0x00007fffffffe390 in ?? ()
    #7  0x0000000000000000 in ?? ()
    
    (gdb) frame 3
    #3  _dl_init (main_map=0x7ffff7ffe1c8, argc=1, argv=0x7fffffffe078, 
        env=0x7fffffffe088) at dl-init.c:126
    126	dl-init.c: Datei oder Verzeichnis nicht gefunden.
    

    Kann mir jemand was dazu sagen?


Log in to reply