Results 1 to 9 of 9

Thread: Issue emitting signal from background thread.

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Jul 2012
    Posts
    5
    Qt products
    Qt4
    Platforms
    Windows

    Default Issue emitting signal from background thread.

    I have a class that I move to a background thread that constantly checks a server for updated settings. If the settings were updated then I emit a signal that forces the program to restart with the new settings. The problem I'm having is when I try to emit the signal it throws a segfault.

    Where I connect this signal to the slot I want it to call.

    Qt Code:
    1. connect(&settings_agent, SIGNAL(updatedSettingsNotification()), LCD,SLOT(restarting()));
    To copy to clipboard, switch view to plain text mode 

    This signal that I am trying to emit:

    Qt Code:
    1. void SettingsFileRetrievalAgent::handleDeletedRegistration()
    2. {
    3. emit updatedSettingsNotification(); //if delete registration, this can cause a crash (let it run maybe 15 seconds after startup).
    4. }
    To copy to clipboard, switch view to plain text mode 





    This is the result from GDB Debugger:

    Qt Code:
    1. Program received signal SIGSEGV, Segmentation fault.
    2. [Switching to Thread 30704.0x7c2c]
    3. 0x6a2b0e31 in QObjectPrivate::isSignalConnected (this=0x0, signal_index=3)
    4. at ../../include/QtCore/private/../../../../../../../ndk_buildrepos/qt-desktop/src/corelib/kernel/qobject_p.h:219
    5. 219 ../../include/QtCore/private/../../../../../../../ndk_buildrepos/qt-desktop/src/corelib/kernel/qobject_p.h: No
    6. uch file or directory.
    7. in ../../include/QtCore/private/../../../../../../../ndk_buildrepos/qt-desktop/src/corelib/kernel/qobject_p.h
    To copy to clipboard, switch view to plain text mode 


    The result when I do a bt:


    Qt Code:
    1. #0 0x6a2b0e31 in QObjectPrivate::isSignalConnected (this=0x0, signal_index=3)
    2. at ../../include/QtCore/private/../../../../../../../ndk_buildrepos/qt-desktop/src/cor
    3. #1 0x6a2164d8 in QMetaObject::activate (sender=0x28d2cc, m=0x4a80cc, local_signal_index=1
    4. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qobject.cpp:3201
    5. #2 0x0041dced in ?? ()
    6. #3 0x0040fd66 in ?? ()
    7. #4 0x0041dc73 in ?? ()
    8. #5 0x6a205ff8 in QMetaObject::metacall (object=0x28d2cc, cl=QMetaObject::InvokeMetaMethod
    9. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qmetaobject.cpp:237
    10. #6 0x6a210c9d in QMetaCallEvent::placeMetaCall (this=0xe0a67b8, object=0x28d2cc)
    11. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qobject.cpp:535
    12. #7 0x6a212ba8 in QObject::event (this=0x28d2cc, e=0xe0a67b8)
    13. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qobject.cpp:1217
    14. #8 0x0111bd88 in QApplicationPrivate::notify_helper (this=0xa0d6bb8, receiver=0x28d2cc, e
    15. at c:\ndk_buildrepos\qt-desktop\src\gui\kernel\qapplication.cpp:4462
    16. #9 0x011196da in QApplication::notify (this=0x28fe4c, receiver=0x28d2cc, e=0xe0a67b8)
    17. at c:\ndk_buildrepos\qt-desktop\src\gui\kernel\qapplication.cpp:3862
    18. #10 0x6a201540 in QCoreApplication::notifyInternal (this=0x28fe4c, receiver=0x28d2cc, even
    19. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qcoreapplication.cpp:731
    20. #11 0x6a268258 in QCoreApplication::sendEvent (receiver=0x28d2cc, event=0xe0a67b8)
    21. at c:/ndk_buildrepos/qt-desktop/src/corelib/kernel//qcoreapplication.h:215
    22. #12 0x6a2025eb in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, d
    23. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qcoreapplication.cpp:1372
    24. #13 0x6a2248e7 in qt_internal_proc (hwnd=0x440ba8, message=1025, wp=0, lp=0)
    25. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qeventdispatcher_win.cpp:497
    26. #14 0x75ed62fa in USER32!OffsetRect () from C:\Windows\syswow64\user32.dll
    27. #15 0x00440ba8 in ?? ()
    28. #16 0x75ed6d3a in USER32!IsWindow () from C:\Windows\syswow64\user32.dll
    29. #17 0x6a22467e in qt_fast_timer_proc (timerId=0, user=4459432)
    30. at c:\ndk_buildrepos\qt-desktop\src\corelib\kernel\qeventdispatcher_win.cpp:429
    31. #18 0x75ed77c4 in USER32!AnyPopup () from C:\Windows\syswow64\user32.dll
    32. #19 0x00000000 in ?? ()
    To copy to clipboard, switch view to plain text mode 


    Qt Code:
    1. this=0x0
    To copy to clipboard, switch view to plain text mode 
    I'm assuming this is the problem. I don't know if it's related to how the QThreads and Signals work, I just can't seem to figure out what the problem is. Any hints or ideas as to why this is happening would be great.
    Last edited by Chris@Link; 2nd July 2012 at 22:06. Reason: Added some more information to the post.

Similar Threads

  1. Emitting signals in other thread
    By mvbhavsar in forum Newbie
    Replies: 9
    Last Post: 8th June 2011, 08:17
  2. Replies: 5
    Last Post: 22nd February 2011, 21:21
  3. Replies: 9
    Last Post: 28th November 2009, 20:31
  4. Emitting signal from DLL to EXE
    By Miihkali in forum Qt Programming
    Replies: 6
    Last Post: 27th March 2009, 08:32
  5. Emitting signal causes CRASH
    By navi1084 in forum Qt Programming
    Replies: 7
    Last Post: 12th March 2009, 16:17

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.