Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. a SIGSEGV in Linux
Qt 6.11 is out! See what's new in the release blog

a SIGSEGV in Linux

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 5 Posters 1.8k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S sjlee

    @JonB
    Hi, Regarding the terms, please refer to this site: https://www.freedesktop.org/software/systemd/man/org.freedesktop.login1.html

    Thank you.

    JonBJ Offline
    JonBJ Offline
    JonB
    wrote on last edited by JonB
    #4

    @sjlee
    I have absolutely no idea how that interacts/changes with your running Qt application, about which you say nothing. Perhaps somebody else does.

    1 Reply Last reply
    0
    • S sjlee

      Hello,

      I have a SIGSEGV crash in Qt. Could you please tell me what the crash is? Thanks in advance.

      Program terminated with signal SIGSEGV, Segmentation fault.
      #0  0x00007f070370c9f6 in __run_exit_handlers (status=1, 
          listp=0x7f07038ae718 <__exit_funcs>, 
          run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
          at exit.c:77
      77	exit.c: No such file or directory.
      [Current thread is 1 (Thread 0x7f070281e700 (LWP 4848))]
      (gdb) 
      (gdb) 
      (gdb) bt
      #0  0x00007f070370c9f6 in __run_exit_handlers (status=1, 
          listp=0x7f07038ae718 <__exit_funcs>, 
          run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
          at exit.c:77
      #1  0x00007f070370cbe0 in __GI_exit (status=<optimized out>) at exit.c:139
      #2  0x00007f0700aca371 in QXcbConnection::processXcbEvents(QFlags<QEventLoop::ProcessEventsFlag>) [clone .cold] () from /usr/local/bin/across/libQt5XcbQpa.so.5
      #3  0x00007f0700af8de3 in xcbSourceDispatch(_GSource*, int (*)(void*), void*)
          () from /usr/local/bin/across/libQt5XcbQpa.so.5
      #4  0x00007f07031b417d in g_main_context_dispatch ()
         from /lib/x86_64-linux-gnu/libglib-2.0.so.0
      #5  0x00007f07031b4400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
      #6  0x00007f07031b44a3 in g_main_context_iteration ()
         from /lib/x86_64-linux-gnu/libglib-2.0.so.0
      #7  0x00007f07043522fe in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/bin/across/libQt5Core.so.5
      #8  0x00007f07042fd20b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/bin/across/libQt5Core.so.5
      #9  0x00007f0704304ade in QCoreApplication::exec() ()
         from /usr/local/bin/across/libQt5Core.so.5
      #10 0x000000000056adf9 in Across::RunCommonRoutine(int&, char**, _ACROSS_CONTEXT*, __sigset_t const*, int&)::{lambda()#3}::operator()() const ()
      #11 0x00007f0703ce9240 in std::execute_native_thread_routine (__p=0x1690b70)
      --Type <RET> for more, q to quit, c to continue without paging--
         /var/tmp/sayongza/gcc-9.3.0_source/gcc-9.3.0/libstdc++-v3/src/c++11/thread.cc:80
      #12 0x00007f070404d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #13 0x00007f07037e5293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      
      

      The backtrace is for Qt5.14.2 and it still occurs on Qt5.15.
      It would occur sometimes when a user session changes, e.g., user login or logout (but I don't know exactly which moment ).

      Q Offline
      Q Offline
      Qt embedded developer
      wrote on last edited by
      #5

      @sjlee said in a SIGSEGV in Linux:

      exit.c:139

      may be this line cause crash in your code.

      S 1 Reply Last reply
      0
      • S sjlee

        Hello,

        I have a SIGSEGV crash in Qt. Could you please tell me what the crash is? Thanks in advance.

        Program terminated with signal SIGSEGV, Segmentation fault.
        #0  0x00007f070370c9f6 in __run_exit_handlers (status=1, 
            listp=0x7f07038ae718 <__exit_funcs>, 
            run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
            at exit.c:77
        77	exit.c: No such file or directory.
        [Current thread is 1 (Thread 0x7f070281e700 (LWP 4848))]
        (gdb) 
        (gdb) 
        (gdb) bt
        #0  0x00007f070370c9f6 in __run_exit_handlers (status=1, 
            listp=0x7f07038ae718 <__exit_funcs>, 
            run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true)
            at exit.c:77
        #1  0x00007f070370cbe0 in __GI_exit (status=<optimized out>) at exit.c:139
        #2  0x00007f0700aca371 in QXcbConnection::processXcbEvents(QFlags<QEventLoop::ProcessEventsFlag>) [clone .cold] () from /usr/local/bin/across/libQt5XcbQpa.so.5
        #3  0x00007f0700af8de3 in xcbSourceDispatch(_GSource*, int (*)(void*), void*)
            () from /usr/local/bin/across/libQt5XcbQpa.so.5
        #4  0x00007f07031b417d in g_main_context_dispatch ()
           from /lib/x86_64-linux-gnu/libglib-2.0.so.0
        #5  0x00007f07031b4400 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
        #6  0x00007f07031b44a3 in g_main_context_iteration ()
           from /lib/x86_64-linux-gnu/libglib-2.0.so.0
        #7  0x00007f07043522fe in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/bin/across/libQt5Core.so.5
        #8  0x00007f07042fd20b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/local/bin/across/libQt5Core.so.5
        #9  0x00007f0704304ade in QCoreApplication::exec() ()
           from /usr/local/bin/across/libQt5Core.so.5
        #10 0x000000000056adf9 in Across::RunCommonRoutine(int&, char**, _ACROSS_CONTEXT*, __sigset_t const*, int&)::{lambda()#3}::operator()() const ()
        #11 0x00007f0703ce9240 in std::execute_native_thread_routine (__p=0x1690b70)
        --Type <RET> for more, q to quit, c to continue without paging--
           /var/tmp/sayongza/gcc-9.3.0_source/gcc-9.3.0/libstdc++-v3/src/c++11/thread.cc:80
        #12 0x00007f070404d609 in start_thread (arg=<optimized out>) at pthread_create.c:477
        #13 0x00007f07037e5293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
        
        

        The backtrace is for Qt5.14.2 and it still occurs on Qt5.15.
        It would occur sometimes when a user session changes, e.g., user login or logout (but I don't know exactly which moment ).

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by
        #6

        @sjlee
        BTW, if it helps any. It looks like there is an Xcb event causing process exit. When a C program exits there is an _atexit() function which is called during program to place a list of functions to call when the C program exits. I imagine C++ leverages something like this to place a bunch of destructor calls in a list. And somewhere in processing this list, or calling the functions on it, you are getting a SIGSEGV. It is not clear how detailed the debugger is in pinpointing exactly where. Maybe, for example, it's a double-destruction, or the object to be destructed has already been destroyed, or something of that ilk?

        I don't know what you are supposed to do with this information, but there you are :)

        S 1 Reply Last reply
        0
        • JonBJ JonB

          @sjlee
          BTW, if it helps any. It looks like there is an Xcb event causing process exit. When a C program exits there is an _atexit() function which is called during program to place a list of functions to call when the C program exits. I imagine C++ leverages something like this to place a bunch of destructor calls in a list. And somewhere in processing this list, or calling the functions on it, you are getting a SIGSEGV. It is not clear how detailed the debugger is in pinpointing exactly where. Maybe, for example, it's a double-destruction, or the object to be destructed has already been destroyed, or something of that ilk?

          I don't know what you are supposed to do with this information, but there you are :)

          S Offline
          S Offline
          sjlee
          wrote on last edited by sjlee
          #7
          This post is deleted!
          1 Reply Last reply
          0
          • Q Qt embedded developer

            @sjlee said in a SIGSEGV in Linux:

            exit.c:139

            may be this line cause crash in your code.

            S Offline
            S Offline
            sjlee
            wrote on last edited by
            #8

            @Qt-embedded-developer

            Thanks for the answer. Our app source code doesn't have exit.c. Maybe Qt or its calling library would have it.

            C 1 Reply Last reply
            0
            • S sjlee

              @Qt-embedded-developer

              Thanks for the answer. Our app source code doesn't have exit.c. Maybe Qt or its calling library would have it.

              C Offline
              C Offline
              ChrisW67
              wrote on last edited by
              #9

              @sjlee "exit.c" is quite likely the source file that implements the standard C library exit(). Is Across::RunCommonRoutine() one of yours? It seems to be the only thing outside Qt/Standard library/OS to touch that trace.

              1 Reply Last reply
              0
              • S Offline
                S Offline
                sjlee
                wrote on last edited by sjlee
                #10
                This post is deleted!
                S 1 Reply Last reply
                0
                • S sjlee

                  This post is deleted!

                  S Offline
                  S Offline
                  sjlee
                  wrote on last edited by
                  #11
                  This post is deleted!
                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    sjlee
                    wrote on last edited by
                    #12
                    This post is deleted!
                    1 Reply Last reply
                    0
                    • Kent-DorfmanK Offline
                      Kent-DorfmanK Offline
                      Kent-Dorfman
                      wrote on last edited by
                      #13

                      When I see something like this the first thing that comes to mind is that interdependent object destructors are being destroyed in the wrong order.

                      The dystopian literature that served as a warning in my youth has become an instruction manual in my elder years.

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        sjlee
                        wrote on last edited by sjlee
                        #14

                        Found the source of the crash.

                        void QXcbConnection::processXcbEvents(QEventLoop::ProcessEventsFlags flags)
                        {
                            int connection_error = xcb_connection_has_error(xcb_connection());
                            if (connection_error) {
                                qWarning("The X11 connection broke (error %d). Did the X11 server die?", connection_error);
                                exit(1); <= HERE
                            }
                        

                        In my app, Qt runs in a child thread and when it meets the exit(1), the standard cleanup proceeds. But my app is multi-threaded...

                        Thank you everyone for your help.

                        1 Reply Last reply
                        0
                        • S sjlee has marked this topic as solved on

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved