<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hi,<br>
    <br>
    I've tried to install Qt libraries and fonts on my embedded system
    at the same path as on my host PC (paths that are in
    CMakeCache.txt), but it doesn't work neither.<br>
    <br>
    I'm really asking myself if Marble is well configured with CMake for
    my system and if toolchainfile.cmake environment parameters are
    correct. The problem here is that my build environment is not the
    same as in the system where Marble is executed. So paths in
    toolchainfile.cmake are not the right ones for the embedded system.<br>
    And my build environment is also different from the standard Linux
    environment, as I must cross-compile libraries and applications for
    ARM platforms.<br>
    <br>
    I made further investigations in Qt sources and it seemed to be
    crashing into the <b>processEvents</b> method of <b>QEventLoop</b>
    on this line exactly : <small><br>
    </small> <small>return
      d->threadData->eventDispatcher->processEvents(flags);</small><br>
    <br>
    The event dispatcher is correctly instanciated, but it doesn't even
    enter its <small>processEvents()</small> method.<br>
    <br>
    This bug really desperates me now, as I don't even find the
    beginning of a solution... Maybe someone has the slightest idea ? Or
    could explain me the correct way to cross-compile Marble for ARM
    system, if there is a way...<br>
    <br>
    Thanks,<br>
    -- <br>
    Jérémie Scheer<br>
    Software Engineer<br>
    Tel: +33 (0)9 72 29 41 44<br>
    Fax: +33 (0)9 72 28 79 26<br>
    Armadeus Systems - A new vision of the embedded world<br>
    <a class="moz-txt-link-freetext" href="http://www.armadeus.com">http://www.armadeus.com</a><br>
    <br>
    <br>
    On 05/31/2012 06:20 PM, Jeremie Scheer wrote:
    <blockquote cite="mid:4FC79A3C.4010609@armadeus.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      Hi,<br>
      <br>
      I've put traces in Qt sources to see where it crashes. And it
      seemed to be crashing after the <small>mapWidget->show()</small>
      when I call <small>qApp->exec</small> and when it is launching
      the <b>eventLoop</b> in Qt.<br>
      <br>
      So is there an element in Marble that is related to the eventLoop
      that could block its execution ?<br>
      <br>
      Regards,<br>
      -- <br>
      Jérémie Scheer<br>
      Software Engineer<br>
      Tel: +33 (0)9 72 29 41 44<br>
      Fax: +33 (0)9 72 28 79 26<br>
      Armadeus Systems - A new vision of the embedded world<br>
      <a moz-do-not-send="true" class="moz-txt-link-freetext"
        href="http://www.armadeus.com">http://www.armadeus.com</a><br>
      <br>
      <br>
      On 05/31/2012 02:57 PM, Jeremie Scheer wrote:
      <blockquote cite="mid:4FC76AAD.9030309@armadeus.com" type="cite">
        <meta content="text/html; charset=ISO-8859-1"
          http-equiv="Content-Type">
        Hi Dennis,<br>
        <br>
        In fact I compile Marble and my application with Buildroot, that
        is a package compiler for embedded system. So all packages are
        compiled on my host PC and then run on the embedded system.<br>
        <br>
        This is why Qt headers and libraries paths are not the same in
        CMakeCache.txt (paths where Qt embedded is intalled on my PC)
        and on my system. But Qt libraries can be load on it with
        LD_LIBRARY_PATH, that is correctly set.<br>
        <br>
        On my PC, Marble is configured with CMake like this:<br>
        <blockquote><small>cmake marble \<br>
                    -DCMAKE_TOOLCHAIN_FILE="toolchainfile.cmake" \<br>
                    -DCMAKE_INSTALL_PREFIX="/usr"<br>
          </small></blockquote>
        <br>
        <i>toolchainfile.cmake</i> initializes all necessary CMake
        environment variables:<br>
        <blockquote><small>set(CMAKE_SYSTEM_NAME Linux)<br>
            set(CMAKE_C_COMPILER
/srv/developpements/BEF2012/software/bsp/buildroot/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-gcc)<br>
            set(CMAKE_CXX_COMPILER
/srv/developpements/BEF2012/software/bsp/buildroot/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-g++)<br>
            set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Os -pipe -Os 
            -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
            -D_FILE_OFFSET_BITS=64" CACHE STRING "Buildroot CFLAGS"
            FORCE)<br>
            set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -Os -pipe -Os 
            -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
            -D_FILE_OFFSET_BITS=64" CACHE STRING "Buildroot CXXFLAGS"
            FORCE)<br>
            set(CMAKE_INSTALL_SO_NO_EXE 0)<br>
            set(CMAKE_PROGRAM_PATH
"/srv/developpements/BEF2012/software/bsp/buildroot/output/host/usr/bin")<br>
            set(CMAKE_FIND_ROOT_PATH
"/srv/developpements/BEF2012/software/bsp/buildroot/output/host/usr/arm-unknown-linux-uclibcgnueabi/sysroot")<br>
            set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)<br>
            set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)<br>
            set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)<br>
            set(ENV{PKG_CONFIG_SYSROOT_DIR}
"/srv/developpements/BEF2012/software/bsp/buildroot/output/host/usr/arm-unknown-linux-uclibcgnueabi/sysroot")<br>
          </small></blockquote>
        <br>
        And then Marble is compiled with arm-linux-g++ compiler.<br>
        <br>
        If the problem is related to static functions, it is strange
        that the QSettings bug made my app crash on both x86 and ARM
        system whereas this bug (planetList) only affects ARM system.<br>
        <br>
        Regards,<br>
        -- <br>
        Jérémie Scheer<br>
        Software Engineer<br>
        Tel: +33 (0)9 72 29 41 44<br>
        Fax: +33 (0)9 72 28 79 26<br>
        Armadeus Systems - A new vision of the embedded world<br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://www.armadeus.com">http://www.armadeus.com</a><br>
        <br>
        <br>
        On 05/31/2012 01:52 PM, Dennis Nienhüser wrote:
        <blockquote cite="mid:4FC75B6B.2070509@gentoo.org" type="cite">
          <meta content="text/html; charset=ISO-8859-1"
            http-equiv="Content-Type">
          Hi Jeremie,<br>
          <br>
          interesting - note that Planet::planetList is a static
          function again.<br>
          <br>
          I'm wondering if there's some more serious problem in the way
          how Marble was compiled wrt to Qt embedded, or how the
          environment looks like when running Marble. Are there any
          traces to the Qt version installed on the system maybe? The
          following checks (in the build dir) might be useful to
          determine that:<br>
          <br>
          grep '^QT_.*_INCLUDE_DIR:PATH=' CMakeCache.txt<br>
          grep '^QT_.*_LIBRARY.*FILEPATH=' CMakeCache.txt<br>
          ldd src/marble | grep libQt<br>
          <br>
          Regards,<br>
          Dennis<br>
          <br>
          Am 31.05.2012 12:09, schrieb Jeremie Scheer:
          <blockquote cite="mid:4FC74359.3050306@armadeus.com"
            type="cite">
            <meta content="text/html; charset=ISO-8859-1"
              http-equiv="Content-Type">
            Hi,<br>
            <br>
            I've identified what caused the segfault on ARM : it was
            crashing during the initialization of the QStringList in
            Planet.cpp - planetList().<br>
            <br>
            I don't know why but the following code l.364 made the app
            crash, but only on embedded ARM system:<br>
            <blockquote><small>planets << "mercury"<br>
                    << "venus"<br>
                    << "earth"<br>
                    << "mars"<br>
                    << "jupiter"<br>
                    << "saturn"<br>
                    << "uranus"<br>
                    << "neptune"<br>
                    << "pluto"<br>
                    << "sun"<br>
                  << "moon"<br>
                  << "sky";<br>
              </small></blockquote>
            So I replaced it by : <br>
            <blockquote><small>QString planetsStringList =
"mercury,venus,earth,mars,jupiter,saturn,uranus,neptune,pluto,sun,moon,sky";<br>
                    planets = planetsStringList.split(",");<br>
              </small></blockquote>
            <br>
            Now MarbleWidget is correctly instanciated but my app
            crashes on another <b>Segmentation fault</b> after the
            instruction <small>mapWidget->show();</small>, only on
            ARM.<br>
            <br>
            Regards,<br>
            -- <br>
            Jérémie Scheer<br>
            Software Engineer<br>
            Tel: +33 (0)9 72 29 41 44<br>
            Fax: +33 (0)9 72 28 79 26<br>
            Armadeus Systems - A new vision of the embedded world<br>
            <a moz-do-not-send="true" class="moz-txt-link-freetext"
              href="http://www.armadeus.com">http://www.armadeus.com</a><br>
            <br>
            <br>
            On 05/30/2012 10:50 AM, Jeremie Scheer wrote:
            <blockquote cite="mid:4FC5DF64.2000907@armadeus.com"
              type="cite">Hi Dennis, <br>
              <br>
              I tried to compile Marble with the latest master where you
              have commited the fix for static QSettings and I tested it
              with my application. <br>
              <br>
              The good news is that it doesn't crash anymore on a QMutex
              deadlock on QVFB or ARM platforms. And without the little
              trick I'd done in Qt to fix it (I commented a QMutex
              lock). <br>
              <br>
              For the Segmentation Fault crash, I've no more bitmaps
              loading warnings with your commit but it still crashes on
              my ARM embedded system. <br>
              The crash happens just when the MarbleWidget object is
              initialized as it tries to get profiles for the
              MarbleWidgetPrivate object (MarbleWidget.cpp : l.95). <br>
              <br>
              Regards, <br>
            </blockquote>
            <br>
            <fieldset class="mimeAttachmentHeader"></fieldset>
            <br>
            <pre wrap="">_______________________________________________
Marble-devel mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:Marble-devel@kde.org">Marble-devel@kde.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://mail.kde.org/mailman/listinfo/marble-devel">https://mail.kde.org/mailman/listinfo/marble-devel</a>
</pre>
          </blockquote>
        </blockquote>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
        <pre wrap="">_______________________________________________
Marble-devel mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:Marble-devel@kde.org">Marble-devel@kde.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://mail.kde.org/mailman/listinfo/marble-devel">https://mail.kde.org/mailman/listinfo/marble-devel</a>
</pre>
      </blockquote>
      <br>
      <br>
      <div class="moz-signature"><br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Marble-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Marble-devel@kde.org">Marble-devel@kde.org</a>
<a class="moz-txt-link-freetext" href="https://mail.kde.org/mailman/listinfo/marble-devel">https://mail.kde.org/mailman/listinfo/marble-devel</a>
</pre>
    </blockquote>
    <br>
    <br>
  </body>
</html>