<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    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 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>
  </body>
</html>