Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

segmentation fault at graphics_system_name.isEmpty()



  • I have ported Qt 4.8.6 to sparc linux.as per my knowledge Sparc and Linux support is not available in qws folder.
    I have copied linux-generic-g++ to linux-sparc-g++ and changed qmake.conf as per my toolchain functionality as shown below.

    qmake configuration for building with g++
    include(../../common/linux.conf)
    include(../../common/gcc-base-unix.conf)
    include(../../common/g++-unix.conf)
    #include (../../common/gcc-base-.conf)
    #include(../../common/g++.conf)
    include(../../common/qws.conf)

    modifications to g++.conf
    #Toolchain
    #Compiler Flags to take advantage of the sparc architecture
    QMAKE_CFLAGS_RELEASE = -nostdlib -nostartfiles -shared
    QMAKE_CXXFLAGS_RELEASE = -nostdlib -nostartfiles -shared
    QMAKE_LFLAGS_RELEASE = -nostdlib -nostartfiles -shared

    QMAKE_CC = sparc-elf-gcc
    QMAKE_CXX = sparc-elf-g++
    QMAKE_LINK = sparc-elf-g++
    QMAKE_LINK_SHLIB = sparc-elf-g++

    modifications to linux.conf
    QMAKE_AR = sparc-elf-ar cqs
    QMAKE_OBJCOPY = sparc-elf-objcopy
    QMAKE_STRIP = sparc-elf-strip

    load(qt_config)

    After this I have configured with below configuration feature
    ./configure -verbose -opensource -confirm-license -no-qt3support -no-glib -depths 32 -qt-gfx-vnc -no-gfx-qvfb -no-gfx-multiscreen -no-gfx-directfb -debug -shared -embedded sparc -platform qws/linux-x86_64-g++ -xplatform qws/linux-sparc-g++ -host-little-endian -little-endian -no-openssl -no-opengl -no-sql-sqlite -no-xmlpatterns -no-multimedia -no-audio-backend -no-phonon -no-script -no-phonon-backend -no-svg -multimedia -no-webkit -nomake demos -no-separate-debug-info -prefix /usr/local/ -plugindir /usr/local/plugins -importdir /usr/local/imports -translationdir /usr/local/translations -no-rpath

    I have successfully crated all shared library and copied into my board /lib/ path

    Now my plan is to run analogclock example on board using below command(I don't have display that's what I am using VNC display)
    ./analogclock -qws -display VNC:0

    analogclock[120]: segfault at 8 ip 5019b06c (rpc f000eff0) sp ef82cae8 error 30001 in libQtGui.so.4.8.6[50017000+10cb000]
    Segmentation fault

    I am getting segmentation fault when graphics_system_name.isEmpty(); in src/gui/kernel/qapplication.cpp file is invoked.

    After debugging I found that global "QString QApplicationPrivate::graphics_system_name;" object is created successfully with valid address 0x5143a400.
    However I could not access any QString member functions such as (graphics_system_name.data(), graphics_system_name.size().....)

    I have ported Qt 4.8.6 to sparc linux.as per my knowledge Sparc and Linux support is not available in qws folder.
    I have copied linux-generic-g++ to linux-sparc-g++ and changed qmake.conf as per my toolchain functionality as shown below.

    qmake configuration for building with g++
    include(../../common/linux.conf)
    include(../../common/gcc-base-unix.conf)
    include(../../common/g++-unix.conf)
    #include (../../common/gcc-base-.conf)
    #include(../../common/g++.conf)
    include(../../common/qws.conf)

    modifications to g++.conf
    #Toolchain
    #Compiler Flags to take advantage of the sparc architecture
    QMAKE_CFLAGS_RELEASE = -nostdlib -nostartfiles -shared
    QMAKE_CXXFLAGS_RELEASE = -nostdlib -nostartfiles -shared
    QMAKE_LFLAGS_RELEASE = -nostdlib -nostartfiles -shared

    QMAKE_CC = sparc-elf-gcc
    QMAKE_CXX = sparc-elf-g++
    QMAKE_LINK = sparc-elf-g++
    QMAKE_LINK_SHLIB = sparc-elf-g++

    modifications to linux.conf
    QMAKE_AR = sparc-elf-ar cqs
    QMAKE_OBJCOPY = sparc-elf-objcopy
    QMAKE_STRIP = sparc-elf-strip

    load(qt_config)

    After this I have configured with below configuration feature
    ./configure -verbose -opensource -confirm-license -no-qt3support -no-glib -depths 32 -qt-gfx-vnc -no-gfx-qvfb -no-gfx-multiscreen -no-gfx-directfb -debug -shared -embedded sparc -platform qws/linux-x86_64-g++ -xplatform qws/linux-sparc-g++ -host-little-endian -little-endian -no-openssl -no-opengl -no-sql-sqlite -no-xmlpatterns -no-multimedia -no-audio-backend -no-phonon -no-script -no-phonon-backend -no-svg -multimedia -no-webkit -nomake demos -no-separate-debug-info -prefix /usr/local/ -plugindir /usr/local/plugins -importdir /usr/local/imports -translationdir /usr/local/translations -no-rpath

    I have successfully crated all shared library and copied into my board /lib/ path

    Now my plan is to run analogclock example on board using below command(I don't have display that's what I am using VNC display)
    ./analogclock -qws -display VNC:0

    analogclock[120]: segfault at 8 ip 5019b06c (rpc f000eff0) sp ef82cae8 error 30001 in libQtGui.so.4.8.6[50017000+10cb000]
    Segmentation fault

    I am getting segmentation fault when graphics_system_name.isEmpty(); in src/gui/kernel/qapplication.cpp file is invoked.

    After debugging I found that global "QString QApplicationPrivate::graphics_system_name;" object is created successfully with valid address 0x5143a400.
    However I could not access any QString member functions such as (graphics_system_name.data(), graphics_system_name.size().....)

    if I create local QString class object,it is working fine.if global segmentation fault.

    Please help me....

    Thanks
    Manjunath Goudar


  • Lifetime Qt Champion

    Hi,

    Closing this thread as duplicate


Log in to reply