awthwathje/SteaScree

crash on "copy to game directory"

Closed this issue · 3 comments

$ ./Start\ SteaScree.sh 
./Start SteaScree.sh: line 2: 23735 Floating point exception(core dumped) LD_LIBRARY_PATH=lib ./SteaScree

This on slackware64 -current.

If i start SteaScree without the LD_LIBRRARY_PRELOAD, everythinh works file... so at very least add to the end of the shell script this:

if [ $? != 0 ]; then
  echo "SteaScree crashed, try running it directly by typing ./SteaScree"
fi

Thanks for the tool and the linux version!

Well, I didn't have any chance to test SteaScree on Slackware, thanks for heads up! LD_LIBRARY_PATH=lib makes it so system-wide Qt libraries aren't used and I don't understand from where LD_LIBRARY_PRELOAD you mentioned went. Do you mean LD_LIBRARY_PATH=lib?

yes, i'm talking about the LD_LIBRARY_PATH=lib (sorry i had wrongly swap PATH with PRELOAD).

something in the SteaScree lib/ is making the app crash in slackware... probably some version missmatch with other libs in the system

I have a core, so running gdb i get:


Core was generated by `./SteaScree'.
Program terminated with signal SIGFPE, Arithmetic exception.
#0  0x000000000041c1df in Controller::saveThumbnail(QString, QImage, unsigned int, unsigned int) ()
[Current thread is 1 (Thread 0x7f992c7cf740 (LWP 23966))]
(gdb) bg
Undefined command: "bg".  Try "help".
(gdb) bt
#0  0x000000000041c1df in Controller::saveThumbnail(QString, QImage, unsigned int, unsigned int) ()
#1  0x000000000041d4ff in Controller::pushScreenshots(QList<Screenshot>) ()
#2  0x000000000041f5db in Controller::prepareScreenshots(QString, QString, MainWindow*) ()
#3  0x000000000040bfb0 in QtPrivate::QSlotObject<void (Controller::*)(QString, QString, MainWindow*), QtPrivate::List<QString, QString, MainWindow*>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) ()
#4  0x00007f992ae51e3d in QMetaObject::activate(QObject*, int, int, void**) () from lib/libQt5Core.so.5
#5  0x0000000000425acc in MainWindow::sendSelectedIDs(QString, QString, MainWindow*) ()
#6  0x00000000004112c6 in MainWindow::on_pushButton_copyScreenshots_clicked() ()
#7  0x00000000004264fd in MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#8  0x0000000000426ce5 in MainWindow::qt_metacall(QMetaObject::Call, int, void**) ()
#9  0x00007f992ae51dc0 in QMetaObject::activate(QObject*, int, int, void**) () from lib/libQt5Core.so.5
#10 0x00007f992bfffe32 in QAbstractButton::clicked(bool) () from lib/libQt5Widgets.so.5
#11 0x00007f992c000025 in ?? () from lib/libQt5Widgets.so.5
#12 0x00007f992c0015f4 in ?? () from lib/libQt5Widgets.so.5
#13 0x00007f992c001794 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from lib/libQt5Widgets.so.5
#14 0x00007f992bf61738 in QWidget::event(QEvent*) () from lib/libQt5Widgets.so.5
#15 0x00007f992bf1bbdc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from lib/libQt5Widgets.so.5
#16 0x00007f992bf22eb8 in QApplication::notify(QObject*, QEvent*) () from lib/libQt5Widgets.so.5
#17 0x00007f992ae2a0b0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from lib/libQt5Core.so.5
#18 0x00007f992bf21e6f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from lib/libQt5Widgets.so.5
#19 0x00007f992bf7d2e4 in ?? () from lib/libQt5Widgets.so.5
#20 0x00007f992bf7f8d3 in ?? () from lib/libQt5Widgets.so.5
#21 0x00007f992bf1bbdc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from lib/libQt5Widgets.so.5
#22 0x00007f992bf228d0 in QApplication::notify(QObject*, QEvent*) () from lib/libQt5Widgets.so.5
#23 0x00007f992ae2a0b0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from lib/libQt5Core.so.5
#24 0x00007f992b728d1b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from lib/libQt5Gui.so.5
#25 0x00007f992b72ab85 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from lib/libQt5Gui.so.5
#26 0x00007f992b70c2a3 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from lib/libQt5Gui.so.5
#27 0x00007f99241e7bb0 in ?? () from lib/libQt5XcbQpa.so.5
#28 0x00007f9926d50877 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#29 0x00007f9926d50aa8 in ?? () from /usr/lib64/libglib-2.0.so.0
#30 0x00007f9926d50b4c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#31 0x00007f992ae774f7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from lib/libQt5Core.so.5
#32 0x00007f992ae2839a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from lib/libQt5Core.so.5
#33 0x00007f992ae3017d in QCoreApplication::exec() () from lib/libQt5Core.so.5
#34 0x000000000040b469 in main ()

Well, as far as I understood, you just removed the LD_LIBRARY_PATH=lib, so the native Qt libraries are used instead of which were shipped in SteaScree's tarball. For some reason versions matched, obviously because you have the latest Qt installed.

Whereas it worked for you (which is good) I suppose for majority of users on popular Linux distros (such as Ubuntu and Debian) this trick will not work, since they are typically shipped with some earlier (stable) Qt libraries.

Still, as a last resort, it may be feasible to add a message when the app crashes, that probably native libraries may work, just as you suggested. I will do it in the next release.