Opened 9 years ago

Closed 4 weeks ago

Last modified 3 weeks ago

#3103 closed defect (fixed)

User report worker froze when exiting

Reported by: historic_bruno Owned by:
Priority: Should Have Milestone: Alpha 23
Component: Core engine Keywords:
Cc: Patch:

Description (last modified by phosit)

OS: OS X Yosemite Game version: A18

Only happened once, it looks like it was waiting for the user report thread (#7) to finish, which was running the blocking curl_easy_perform function. Normally this finishes in seconds, but I waited several minutes before forcing the process to close.

Here's the backtrace:

(lldb) bt all
* thread #1: tid = 0x0c4d, 0x00007fff83c0a486 libsystem_kernel.dylib`__semwait_signal + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x00007fff83c0a486 libsystem_kernel.dylib`__semwait_signal + 10
    frame #1: 0x00007fff8748bba7 libsystem_pthread.dylib`pthread_join + 445
    frame #2: 0x0000000105746926 pyrogenesis`CUserReporter::Deinitialize() [inlined] CUserReporterWorker::Shutdown(this=0x00007fe6c87007f0) + 86 at UserReport.cpp:186
    frame #3: 0x00000001057468f8 pyrogenesis`CUserReporter::Deinitialize(this=0x00000001073a57a8) + 40 at UserReport.cpp:595
    frame #4: 0x00000001057580d9 pyrogenesis`Shutdown(flags=<unavailable>) + 601 at GameSetup.cpp:733
    frame #5: 0x00000001055ab05e pyrogenesis`RunGameOrAtlas(argc=<unavailable>, argv=<unavailable>) + 5070 at main.cpp:512
    frame #6: 0x00000001055a9bc5 pyrogenesis`main(argc=1, argv=0x00007fff5a657ba8) + 53 at main.cpp:555
    frame #7: 0x00000001055a9ac4 pyrogenesis`start + 52

  thread #2: tid = 0x0c5a, 0x00007fff83c0b22e libsystem_kernel.dylib`kevent64 + 10, queue = 'com.apple.libdispatch-manager'
    frame #0: 0x00007fff83c0b22e libsystem_kernel.dylib`kevent64 + 10
    frame #1: 0x00007fff856a9d91 libdispatch.dylib`_dispatch_mgr_invoke + 247
    frame #2: 0x00007fff856a9a6a libdispatch.dylib`_dispatch_mgr_thread + 52

  thread #3: tid = 0x0c70, 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'JS GC Helper'
    frame #0: 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff87488ea0 libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000105a4c79e pyrogenesis`PR_WaitCondVar(cvar=0x0000618000069c80, timeout=4294967295) + 414 at ptsynch.c:385
    frame #3: 0x0000000105d5e1fb pyrogenesis`js::GCHelperThread::threadLoop() [inlined] js::GCHelperThread::wait(this=0x00007fe6c8c28398, which=<unavailable>) + 5 at jsgc.cpp:2274
    frame #4: 0x0000000105d5e1f6 pyrogenesis`js::GCHelperThread::threadLoop(this=0x00007fe6c8c28398) + 102 at jsgc.cpp:2297
    frame #5: 0x0000000105a58776 pyrogenesis`_pt_root(arg=0x00007fe6c8400670) + 358 at ptthread.c:205
    frame #6: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #4: tid = 0x0c71, 0x00007fff83c0552e libsystem_kernel.dylib`mach_msg_trap + 10
    frame #0: 0x00007fff83c0552e libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fff83c0469f libsystem_kernel.dylib`mach_msg + 55
    frame #2: 0x0000000105b6519e pyrogenesis`AsmJSMachExceptionHandlerThread(threadArg=0x00007fe6c8c27400) + 62 at AsmJSSignalHandlers.cpp:721
    frame #3: 0x0000000105a58776 pyrogenesis`_pt_root(arg=0x00007fe6c8407d50) + 358 at ptthread.c:205
    frame #4: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #5: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #6: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #5: tid = 0x0c72, 0x00007fff83c0552e libsystem_kernel.dylib`mach_msg_trap + 10, name = 'com.apple.audio.IOThread.client'
    frame #0: 0x00007fff83c0552e libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fff83c0469f libsystem_kernel.dylib`mach_msg + 55
    frame #2: 0x00007fff8b2f5980 CoreAudio`HALB_MachPort::SendMessageWithReply(unsigned int, unsigned int, unsigned int, unsigned int, mach_msg_header_t*, bool, unsigned int) + 98
    frame #3: 0x00007fff8b2f590e CoreAudio`HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 42
    frame #4: 0x00007fff8b2f3f60 CoreAudio`HALC_ProxyIOContext::IOWorkLoop() + 952
    frame #5: 0x00007fff8b2f3b0e CoreAudio`HALC_ProxyIOContext::IOThreadEntry(void*) + 88
    frame #6: 0x00007fff8b2f39eb CoreAudio`HALB_IOThread::Entry(void*) + 157
    frame #7: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #8: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #9: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #6: tid = 0x0c76, 0x00007fff83c0a486 libsystem_kernel.dylib`__semwait_signal + 10
    frame #0: 0x00007fff83c0a486 libsystem_kernel.dylib`__semwait_signal + 10
    frame #1: 0x00007fff818c9f7d libsystem_c.dylib`nanosleep + 199
    frame #2: 0x00000001061e7c44 pyrogenesis`SDL_Delay_REAL + 100
    frame #3: 0x0000000106103937 pyrogenesis`SDL_Delay + 23
    frame #4: 0x0000000105773a17 pyrogenesis`CSoundManagerWorker::Run(this=0x0000608000120820) + 71 at SoundManager.cpp:158
    frame #5: 0x0000000105773992 pyrogenesis`CSoundManagerWorker::RunThread(data=0x0000608000120820) + 98 at SoundManager.cpp:110
    frame #6: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #7: tid = 0x0c77, 0x00007fff83c0a3f6 libsystem_kernel.dylib`__select + 10
    frame #0: 0x00007fff83c0a3f6 libsystem_kernel.dylib`__select + 10
    frame #1: 0x0000000106040401 pyrogenesis`Curl_poll + 558
    frame #2: 0x000000010603bcad pyrogenesis`curl_multi_wait + 497
    frame #3: 0x0000000106036606 pyrogenesis`curl_easy_perform + 245
    frame #4: 0x0000000105748dd4 pyrogenesis`CUserReporterWorker::ProcessReport(this=0x00007fe6c87007f0) + 612 at UserReport.cpp:355
    frame #5: 0x00000001057488e8 pyrogenesis`CUserReporterWorker::Run(this=0x00007fe6c87007f0) + 1096 at UserReport.cpp:297
    frame #6: 0x0000000105748462 pyrogenesis`CUserReporterWorker::RunThread(data=0x00007fe6c87007f0) + 98 at UserReport.cpp:236
    frame #7: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #8: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #9: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #8: tid = 0x0c87, 0x00007fff83c0552e libsystem_kernel.dylib`mach_msg_trap + 10
    frame #0: 0x00007fff83c0552e libsystem_kernel.dylib`mach_msg_trap + 10
    frame #1: 0x00007fff83c0469f libsystem_kernel.dylib`mach_msg + 55
    frame #2: 0x00007fff80eb0b14 CoreFoundation`__CFRunLoopServiceMachPort + 212
    frame #3: 0x00007fff80eaffdb CoreFoundation`__CFRunLoopRun + 1371
    frame #4: 0x00007fff80eaf838 CoreFoundation`CFRunLoopRunSpecific + 296
    frame #5: 0x00007fff8c0ec7a7 AppKit`_NSEventThread + 137
    frame #6: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #9: tid = 0x0cb9, 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Analysis Helper'
    frame #0: 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff87488ea0 libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000105a4c79e pyrogenesis`PR_WaitCondVar(cvar=0x0000600000066640, timeout=4294967295) + 414 at ptsynch.c:385
    frame #3: 0x0000000105df7984 pyrogenesis`js::WorkerThread::threadLoop() [inlined] js::GlobalWorkerThreadState::wait(which=<unavailable>, millis=<unavailable>) + 660 at jsworkers.cpp:512
    frame #4: 0x0000000105df7973 pyrogenesis`js::WorkerThread::threadLoop(this=0x00007fe6c908e800) + 643 at jsworkers.cpp:1046
    frame #5: 0x0000000105a58776 pyrogenesis`_pt_root(arg=0x00007fe6c8508520) + 358 at ptthread.c:205
    frame #6: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #10: tid = 0x0cba, 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Analysis Helper'
    frame #0: 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff87488ea0 libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000105a4c79e pyrogenesis`PR_WaitCondVar(cvar=0x0000600000066640, timeout=4294967295) + 414 at ptsynch.c:385
    frame #3: 0x0000000105df7984 pyrogenesis`js::WorkerThread::threadLoop() [inlined] js::GlobalWorkerThreadState::wait(which=<unavailable>, millis=<unavailable>) + 660 at jsworkers.cpp:512
    frame #4: 0x0000000105df7973 pyrogenesis`js::WorkerThread::threadLoop(this=0x00007fe6c908e908) + 643 at jsworkers.cpp:1046
    frame #5: 0x0000000105a58776 pyrogenesis`_pt_root(arg=0x00007fe6c85043a0) + 358 at ptthread.c:205
    frame #6: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #11: tid = 0x0cbb, 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Analysis Helper'
    frame #0: 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff87488ea0 libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000105a4c79e pyrogenesis`PR_WaitCondVar(cvar=0x0000600000066640, timeout=4294967295) + 414 at ptsynch.c:385
    frame #3: 0x0000000105df7984 pyrogenesis`js::WorkerThread::threadLoop() [inlined] js::GlobalWorkerThreadState::wait(which=<unavailable>, millis=<unavailable>) + 660 at jsworkers.cpp:512
    frame #4: 0x0000000105df7973 pyrogenesis`js::WorkerThread::threadLoop(this=0x00007fe6c908ea10) + 643 at jsworkers.cpp:1046
    frame #5: 0x0000000105a58776 pyrogenesis`_pt_root(arg=0x00007fe6c851a2a0) + 358 at ptthread.c:205
    frame #6: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #12: tid = 0x0cbc, 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'Analysis Helper'
    frame #0: 0x00007fff83c0a132 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff87488ea0 libsystem_pthread.dylib`_pthread_cond_wait + 693
    frame #2: 0x0000000105a4c79e pyrogenesis`PR_WaitCondVar(cvar=0x0000600000066640, timeout=4294967295) + 414 at ptsynch.c:385
    frame #3: 0x0000000105df7984 pyrogenesis`js::WorkerThread::threadLoop() [inlined] js::GlobalWorkerThreadState::wait(which=<unavailable>, millis=<unavailable>) + 660 at jsworkers.cpp:512
    frame #4: 0x0000000105df7973 pyrogenesis`js::WorkerThread::threadLoop(this=0x00007fe6c908eb18) + 643 at jsworkers.cpp:1046
    frame #5: 0x0000000105a58776 pyrogenesis`_pt_root(arg=0x00007fe6c851a3d0) + 358 at ptthread.c:205
    frame #6: 0x00007fff874882fc libsystem_pthread.dylib`_pthread_body + 131
    frame #7: 0x00007fff87488279 libsystem_pthread.dylib`_pthread_start + 176
    frame #8: 0x00007fff874864b1 libsystem_pthread.dylib`thread_start + 13

  thread #14: tid = 0x12a7, 0x00007fff83c0a946 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #0: 0x00007fff83c0a946 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007fff87488757 libsystem_pthread.dylib`_pthread_wqthread + 869
    frame #2: 0x00007fff874864a1 libsystem_pthread.dylib`start_wqthread + 13

  thread #15: tid = 0x12ab, 0x00007fff83c0a946 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #0: 0x00007fff83c0a946 libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007fff87488757 libsystem_pthread.dylib`_pthread_wqthread + 869
    frame #2: 0x00007fff874864a1 libsystem_pthread.dylib`start_wqthread + 13

Change History (3)

comment:1 by historic_bruno, 9 years ago

Related: #968

comment:2 by phosit, 4 weeks ago

Description: modified (diff)
Resolution: fixed
Status: newclosed

With [21900] It should at most block for 10 sec.

comment:3 by Stan, 3 weeks ago

Milestone: BacklogAlpha 23
Note: See TracTickets for help on using tickets.