[Marble-devel] Using Marble library with Qt Embedded
Jeremie Scheer
jeremie.scheer at armadeus.com
Fri May 25 09:54:40 UTC 2012
Hi,
It finally works ! But only in a Qt Virtual Framebuffer for the moment,
not yet in the embedded system.
What I've done is not very clean, but it seemed to fix the issue.
I simply commented the QMutex lock in qsettings.cpp (method getPath()
l.1166) that was going into a deadlock because the same mutex was called
twice.
But now I have a Segmentation fault when I try to execute the same
application on my ARM platform.
Map theme file does not exist: ""
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed:
No such file or directory
QFileSystemWatcher: failed to add paths:
/root/.local/share/marble/maps/earth/placemarks/
Segmentation fault
I also have the same warnings when launching the app in a QVFB but it
does not crash:
Map theme file does not exist: ""
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed:
No such file or directory
QFileSystemWatcher: failed to add paths:
/home/jeremie/.local/share/marble/maps/earth/placemarks/
QCursor: Cannot create bitmap cursor; invalid bitmap(s)
...
Base tiles for "earth/hillshading" not available. Skipping.
QFSFileEngine::open: No file name specified
Cannot open file '', because: No file name specified
It seems as if the segmentation fault is related to the warning QCursor:
Cannot create bitmap cursor; invalid bitmap(s) : the app crashes just
before this message should be displayed on ARM system.
Any idea of what can cause this crash ?
Regards,
Jérémie SCHEER
On 05/24/2012 11:39 AM, Jeremie Scheer wrote:
> Hi,
>
> I tried to search a bit further to find what can cause the issue. When
> I put a breakpoint in Qt sources on the QMutex error message, if I
> follow up the call chain from the breakpoint, I find the constructor
> of QSettings that may be in cause.
>
> And in Marble, I found that QSettings is instanciated 2 times in
> qtmain.cpp (main method) and QtMarbleConfigDialog.cpp (that is also
> initialized in main() at first).
>
> The only strange thing is that I directly use MarbleWidget in Marble
> library, so Marble main() method must not be called and both QSettings
> never instanciated...
>
> Regards,
>
> Jérémie SCHEER
>
>
> On 05/23/2012 04:49 PM, Jeremie Scheer wrote:
>> In fact, it is even not loading the map theme, as it crashes before
>> the first instruction of the main() method : if I put breakpoints in
>> main(), it doesn't break on them, even at the first instruction, it
>> simply runs and crashes...
>>
>> Regards,
>> --
>> Jérémie Scheer
>> Software Engineer
>> Tel: +33 (0)9 72 29 41 44
>> Fax: +33 (0)9 72 28 79 26
>> Armadeus Systems - A new vision of the embedded world
>> http://www.armadeus.com
>>
>>
>> On 05/23/2012 04:17 PM, Jeremie Scheer wrote:
>>> I tried that also but I'm really not lucky : whatever the map theme
>>> I choose to load in Marble widget, it crashes. So it doesn't seem to
>>> be related neither.
>>>
>>> Regards,
>>> --
>>> Jérémie Scheer
>>> Software Engineer
>>> Tel: +33 (0)9 72 29 41 44
>>> Fax: +33 (0)9 72 28 79 26
>>> Armadeus Systems - A new vision of the embedded world
>>> http://www.armadeus.com
>>>
>>>
>>> On 05/23/2012 03:51 PM, Dennis Nienhüser wrote:
>>>> Hi,
>>>>
>>>> can you try whether using the plain.dgml theme
>>>> ("earth/plain/plain.dgml") instead of openstreetmap.dgml helps?
>>>> This map theme does not have any texture layers. The texture layers
>>>> make use of threads as well.
>>>>
>>>> Regards,
>>>> Dennis
>>>>
>>>> Am 23.05.2012 15:36, schrieb Jeremie Scheer:
>>>>> Hi,
>>>>>
>>>>> Thank you for your answer.
>>>>>
>>>>> Unfortunately it doesn't seem to be the plugins that cause the
>>>>> thread issue.
>>>>> I tried what you suggested me to do but I always run into the same
>>>>> error with QMutex.
>>>>>
>>>>> It is the same error that makes my application crash in a Qt
>>>>> Virtual Framebuffer or on ARM platform.
>>>>>
>>>>> Regards,
>>>>> --
>>>>> Jérémie Scheer
>>>>> Software Engineer
>>>>> Tel: +33 (0)9 72 29 41 44
>>>>> Fax: +33 (0)9 72 28 79 26
>>>>> Armadeus Systems - A new vision of the embedded world
>>>>> http://www.armadeus.com
>>>>>
>>>>>
>>>>> On 05/23/2012 01:25 PM, Dennis Nienhüser wrote:
>>>>>> I started looking into it yesterday but Qt Embedded wasn't
>>>>>> compiling on my system due to some known bug where glib and
>>>>>> webkit interfere.
>>>>>>
>>>>>> I'd suggest trying to move all marble plugins away first (just
>>>>>> remove them from lib/marble/plugins in the installation directory
>>>>>> of marble) and see if that changes things. Might be some
>>>>>> threading issue, the parser plugins working on startup for
>>>>>> example run in their own thread each.
>>>>>>
>>>>>> Regards,
>>>>>> Dennis
>>>>>>
>>>>>> Am 23.05.2012 11:12, schrieb Jeremie Scheer:
>>>>>>> Any idea ?
>>>>>>>
>>>>>>> Is it simply possible to use Marble in a Qt Virtual Framebuffer
>>>>>>> with Qt Embedded ?
>>>>>>>
>>>>>>> I think it should be, because I found this link on the Internet
>>>>>>> http://wm161.net/2008/07/26/marble-under-qtembedded-linux/ . A
>>>>>>> little bit old but it shows that Marble could run under Qt Embedded.
>>>>>>>
>>>>>>> I can't see what is the origin of the bug because I've no
>>>>>>> QThread or QMutex in my application. It can only come from the
>>>>>>> compilation of Marble...
>>>>>>>
>>>>>>> My Qt Embedded is configured like this:
>>>>>>>
>>>>>>> configure -embedded x86_64 -no-cups -no-nis -depths 16,18
>>>>>>> -qvfb -prefix /usr/local/Trolltech/QtEmbedded-4.7.2 -glib
>>>>>>> -confirm-license -qt-sql-sqlite
>>>>>>>
>>>>>>>
>>>>>>> And I configure Marble to build against Qt like this:
>>>>>>>
>>>>>>> PATH=/usr/local/Trolltech/QtEmbedded-4.7.2/bin:$PATH cmake
>>>>>>> -DQTONLY=ON ../marble_qvfb/
>>>>>>>
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Jérémie SCHEER
>>>>>>>
>>>>>>>
>>>>>>> On 05/22/2012 04:13 PM, Jeremie Scheer wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm currently trying to use a Marble library built against _Qt
>>>>>>>> 4.7.4 Embedded x86_.
>>>>>>>>
>>>>>>>> My application using Marble is built against the same Qt and is
>>>>>>>> running in a Qt Virtual Framebuffer with a QWS Server.
>>>>>>>>
>>>>>>>> In the Qt project file, I simply added : /LIBS =
>>>>>>>> -lmarblewidget/ to link with Marble. And when running the
>>>>>>>> application, I defined the environment variable
>>>>>>>> /LD_LIBRARY_PATH=/usr/local/lib/ where Marble libraries are
>>>>>>>> installed.
>>>>>>>>
>>>>>>>> The problem is : when I run the application, before any
>>>>>>>> instruction can be executed, it crashes on :
>>>>>>>>
>>>>>>>> QMutex::lock: Deadlock detected in thread 0x7f1fe30bb740
>>>>>>>>
>>>>>>>>
>>>>>>>> Here is my application code :
>>>>>>>>
>>>>>>>> #include <QtGui/QApplication>
>>>>>>>> #include <marble/MarbleWidget.h>
>>>>>>>> #include <marble/MarbleModel.h>
>>>>>>>> #include <marble/global.h>
>>>>>>>> #include <QWSServer>
>>>>>>>>
>>>>>>>> using namespace Marble;
>>>>>>>>
>>>>>>>> int main(int argc, char** argv)
>>>>>>>> {
>>>>>>>> QApplication app(argc,argv);
>>>>>>>> QWSServer *sw = QWSServer::instance ();
>>>>>>>>
>>>>>>>> // Create a Marble QWidget without a parent
>>>>>>>> MarbleWidget *mapWidget = new MarbleWidget();
>>>>>>>>
>>>>>>>> // Load the OpenStreetMap map
>>>>>>>>
>>>>>>>> mapWidget->setMapThemeId("earth/openstreetmap/openstreetmap.dgml");
>>>>>>>> mapWidget->setProjection(Mercator);
>>>>>>>>
>>>>>>>> mapWidget->show();
>>>>>>>>
>>>>>>>> return app.exec();
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> If I build the same application (without the QWS Server) and
>>>>>>>> Marble against Qt x86, it works well.
>>>>>>>>
>>>>>>>> Is there anything I did wrong with Qt Embedded ?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> --
>>>>>>>> Jérémie Scheer
>>>>>>>> Software Engineer
>>>>>>>> Tel: +33 (0)9 72 29 41 44
>>>>>>>> Fax: +33 (0)9 72 28 79 26
>>>>>>>> ARMadeus Systems - A new vision of the embedded world
>>>>>>>> http://www.armadeus.com
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Marble-devel mailing list
>>>>>>>> Marble-devel at kde.org
>>>>>>>> https://mail.kde.org/mailman/listinfo/marble-devel
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Jérémie Scheer
>>>>>>> Software Engineer
>>>>>>> Tel: +33 (0)9 72 29 41 44
>>>>>>> Fax: +33 (0)9 72 28 79 26
>>>>>>> ARMadeus Systems - A new vision of the embedded world
>>>>>>> http://www.armadeus.com
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Marble-devel mailing list
>>>>>>> Marble-devel at kde.org
>>>>>>> https://mail.kde.org/mailman/listinfo/marble-devel
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Marble-devel mailing list
>>>>>> Marble-devel at kde.org
>>>>>> https://mail.kde.org/mailman/listinfo/marble-devel
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Marble-devel mailing list
>>>>> Marble-devel at kde.org
>>>>> https://mail.kde.org/mailman/listinfo/marble-devel
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Marble-devel mailing list
>>>> Marble-devel at kde.org
>>>> https://mail.kde.org/mailman/listinfo/marble-devel
>>>
>>>
>>> _______________________________________________
>>> Marble-devel mailing list
>>> Marble-devel at kde.org
>>> https://mail.kde.org/mailman/listinfo/marble-devel
>>
>>
>>
>>
>>
>> _______________________________________________
>> Marble-devel mailing list
>> Marble-devel at kde.org
>> https://mail.kde.org/mailman/listinfo/marble-devel
>
>
> --
> Jérémie Scheer
> Software Engineer
> Tel: +33 (0)9 72 29 41 44
> Fax: +33 (0)9 72 28 79 26
> Armadeus Systems - A new vision of the embedded world
> http://www.armadeus.com
>
>
> _______________________________________________
> Marble-devel mailing list
> Marble-devel at kde.org
> https://mail.kde.org/mailman/listinfo/marble-devel
--
Jérémie Scheer
Software Engineer
Tel: +33 (0)9 72 29 41 44
Fax: +33 (0)9 72 28 79 26
Armadeus Systems - A new vision of the embedded world
http://www.armadeus.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/marble-devel/attachments/20120525/738b50b8/attachment-0001.html>
More information about the Marble-devel
mailing list