0 votes

Hi,

I've tested it before (on 12.04 indeed) and was just trying to run it on 12.10 which seems to have a newer Qt library.
The error that I'm seeing is:

Cannot mix incompatible Qt library (version 0x40803) with this library (version 0x40801)
Abort (core dumped)

So I'm guessing that although it is (supposed to be) build as an portable executable without dependancies it seems to be quite dependable on a specific Qt library.

in Solved by Skipper developer (137k points)

Ah, and as an additional follow-up. Removing the libQt* from the libs directory makes it start again. However now I'm running into an connection problem to the license-server. Not sure if that is related though.

Thank you for posting a detailed info. It's interesting that app works correctly when shipped Qt libraries are removed. I will check all executable dependency.

Regarding to license-server issue, it should be fixed now.

Doing a bit of digging; it seems that it is using:
/usr/lib/x86_64-linux-gnu/libQtDBus.so.4
Which in itself is being called from somewhere within the kde styling (oxygen.so to be precies)

Which has version 4.8.3

Download latest version 2.1.6.677 which fixes this issue. We have tested it on latest Ubuntu and Gnome without any problems.


Hi,

Latest 64-bit ubuntu 12.10 and latest OrmD2 seems to continue having this problem. Did the build-config of 64 bit systems got updated correctly too?
fyi, I didn't test the 2.1.6 version you mentioned due to time-constraints.

Grtz

Hello Peter,

We're testing ORM Designer on Ubuntu 12.04 and 12.10 on 32-bit and 64-bit platforms. Also on Debian6 32/64bit and everywhere works fine.

I tried to install one more instance of Ubuntu 12.10 64bit on my developer machine and ORM Designer also works correctly.

enter image description here

Is it a problem still in libQtDBus.so.4 library? Maybe it's something wrong with this library, because we have this library only on 32-bit system and on 64-bit isn't available (and also isn't required on our computers) at all.

Yep, still in libQtDBus. Might be something strictly KDE related then...
From the backtrace I'm seeing some involvement of /usr/lib/kde4/plugins/styles/oxygen.so so that might be the culprit. Would it be an idea to simply include the QtDBus lib (although, when it isn't available on your 64-bit build systems that might be an issue :S) to avoid problems with window managers using some sessionbus messaging.
Other options tend to prerequisite a specific minimum version of libQt to be locally installed which might even be further from optimal.

We're using Qt compiled from the sources distributed by Qt (Trolltech). Now it's version 4.8.2. I'm going to check if there is a way how to force compilation of QtDBus also on 64-bit. (It seems that the same compile switch produce this file only on 32bit but not on 64bit).


Ok, I found a way how to compile libQtDBus also on 64bit platform. But it's necessary to recompile whole Qt. This will take some time. I will let you know.


I'm in no hurry :) The previous mentioned workaround of removing all the Qt library files from libs/ still works and I'm happy to say that I haven't found other problems so far :)


Hi Peter, could you please try following package?
http://www.orm-designer.com/uploads/static/ormd2/deploy64.zip


Nope :(

Hmm, ok now I'm about ready to say 'stupid KDE'. It still insists on including the libQtDBus from /usr/lib :(.
Weird... as if there is some mixup in the order from where the programs tries to load its libraries?
Sorry I don't have an abundant amount of time to debug and dig into it any further. But if you have any idea at all, I'm willing to try it.


Thanks for testing. It's something with references inside the libraries which points to another libraries.

It is probably caused by some 3rd party library with hardcoded path to /usr/lib/libQtDBus . Maybe some library which is dynamically injected to the ORMD2 process? (Not sure if this is possible on linux, on Win32 it's possible to inject dlls inside another executable).

1 Answer

0 votes
Best answer

Well, I've just pasted the backtrace here, maybe you can see where it goes wrong and how to solve it :). It seem to be due to /usr/lib/kde4/plugins/styles/oxygen.so, but I think it is weird that it demands the libQtDBus from /usr/lib

Starting program: /home/software/OrmDesigner/OrmDesigner2 

Warning: couldn't activate thread debugging using libthread_db: Cannot find new threads: generic error
warning: File "/home/software/OrmDesigner/libs/libthread_db.so.1" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
Cannot mix incompatible Qt library (version 0x40803) with this library (version 0x40802)

Program received signal SIGABRT, Aborted.
0x00007ffff14f6445 in ?? () from /home/software/OrmDesigner/libs/libc.so.6
(gdb) bt
#0  0x00007ffff14f6445 in ?? () from /home/software/OrmDesigner/libs/libc.so.6
#1  0x00007ffff14f9bab in ?? () from /home/software/OrmDesigner/libs/libc.so.6
#2  0x00007ffff235ed14 in qt_message_output(QtMsgType, char const*) () from /home/software/OrmDesigner/libs/libQtCore.so.4
#3  0x00007ffff235eecf in ?? () from /home/software/OrmDesigner/libs/libQtCore.so.4
#4  0x00007ffff235f074 in qFatal(char const*, ...) () from /home/software/OrmDesigner/libs/libQtCore.so.4
#5  0x00007ffff247df4b in QObjectPrivate::QObjectPrivate(int) () from /home/software/OrmDesigner/libs/libQtCore.so.4
#6  0x00007fffea21c126 in ?? () from /usr/lib/x86_64-linux-gnu/libQtDBus.so.4
#7  0x00007fffea21f472 in QDBusAbstractInterface::QDBusAbstractInterface(QString const&, QString const&, char const*, QDBusConnection const&, QObject*) () from /usr/lib/x86_64-linux-gnu/libQtDBus.so.4
#8  0x00007fffea203161 in QDBusConnectionInterface::QDBusConnectionInterface(QDBusConnection const&, QObject*) () from /usr/lib/x86_64-linux-gnu/libQtDBus.so.4
#9  0x00007fffea200094 in ?? () from /usr/lib/x86_64-linux-gnu/libQtDBus.so.4
#10 0x00007fffea201552 in QDBusConnection::connectToBus(QDBusConnection::BusType, QString const&) () from /usr/lib/x86_64-linux-gnu/libQtDBus.so.4
#11 0x00007fffea201887 in QDBusConnection::sessionBus() () from /usr/lib/x86_64-linux-gnu/libQtDBus.so.4
#12 0x00007fffe8860b42 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#13 0x00007fffe8877c5c in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so
#14 0x00007ffff2cc9eaa in QStyleFactory::create(QString const&) () from /home/software/OrmDesigner/libs/libQtGui.so.4
#15 0x00007ffff29ce209 in QApplication::style() () from /home/software/OrmDesigner/libs/libQtGui.so.4
#16 0x00007ffff2a3f0cc in ?? () from /home/software/OrmDesigner/libs/libQtGui.so.4
#17 0x00007ffff2a437da in ?? () from /home/software/OrmDesigner/libs/libQtGui.so.4
#18 0x00007ffff29d1f74 in QApplicationPrivate::construct(_XDisplay*, unsigned long, unsigned long) () from /home/software/OrmDesigner/libs/libQtGui.so.4
#19 0x00007ffff29d2834 in QApplication::QApplication(int&, char**, int) () from /home/software/OrmDesigner/libs/libQtGui.so.4
#20 0x0000000000af5d43 in ?? ()
#21 0x0000000000af450e in ?? ()
#22 0x000000000082d73e in ?? ()
#23 0x000000000082d9d2 in ?? ()
#24 0x00007ffff14e176d in ?? () from /home/software/OrmDesigner/libs/libc.so.6
#25 0x00000000004be421 in ?? ()
#26 0x00007fffffffe308 in ?? ()
#27 0x000000000000001c in ?? ()
#28 0x0000000000000001 in ?? ()
#29 0x00007fffffffe66e in ?? ()
#30 0x0000000000000000 in ?? ()
by Skipper developer (137k points)
selected by

Based on your backtrace I think the problem is in KDE too. It seems that QStyleFactory uses some libraries from kde4 (oxygen.so) which uses QDbusConnection (this also explains why we didn't needed QDbusConnection on our Debian/Ubuntu systems).

The problem is probably in hardcoded Qt path inside the oxygen.os library. I'm not sure if this could be solved in any other way than by using system Qt libraries.

Another solution would be to force application to use another than oxygen style, but I don't think it's a good idea.


I definitely agree with the latter.
However, when the goal is to get a fully portable application, at first trying the systems libraries doesn't seem to be a good idea either. It is likely to cause problems, if not now... then in the future.

This guy is pretty clear about this issue though.
http://lists-archives.com/kde-devel/27964-running-static-qt-binaries-under-kde.html
And, a possible solution for oxygen (it is the follow up actually):
http://lists-archives.com/kde-devel/27965-running-static-qt-binaries-under-kde.html


nd, actually trying to read it first :).

Maybe the 'solution' is to actually use the libQtDBus library in the application so to force it reading it from the libs/ directory?


It's interesting idea. I'm going to try it.

I tried to initialize DBus session connection at application start, so libQtDBus should be loaded from corerct place. Could you please try it?
https://www.dropbox.com/s/90y8e3wip9mp7tg/deploy.zip


Victory! Great!

However, maybe the message "QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave." shouldn't be taken in vain :). Probably won't do any harm but I'm always in favour of no messages at all :).


Great!

Regarding to warning message, I'm not sure if it will be possible to remove it. It's necessary to initialize QDBus before QApplication object is constructed because inside QApplication constructor oxigen.so is called.


I tried one more thing. Instead of creating DBus connection I created QDBusMessage witch didn't write error message. Could you please try if also this solution works for you? https://www.dropbox.com/s/90y8e3wip9mp7tg/deploy.zip

Thanks!


Yep, that works like a charm! Now, I'm a happy camper ;)


Super great ;-). Thank you for fast testing and cooperation. I will move our conversation to standalone thread.