Skip to content

Add readable Thunder internals postmortem dump#2160

Open
nxtum wants to merge 5 commits into
rdkcentral:masterfrom
nxtum:callstackDumping
Open

Add readable Thunder internals postmortem dump#2160
nxtum wants to merge 5 commits into
rdkcentral:masterfrom
nxtum:callstackDumping

Conversation

@nxtum

@nxtum nxtum commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@nxtum nxtum requested a review from sebaszm June 22, 2026 11:02
@sebaszm sebaszm requested a review from Copilot June 23, 2026 07:37
@sebaszm

sebaszm commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Please post a sample dump :)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a human-readable (“plain text”) post-mortem dump alongside the existing JSON dump for Thunder worker-pool internals, improving debuggability of crashes/hangs without requiring JSON parsing.

Changes:

  • Build a readable text representation of worker-pool pending requests and per-thread callstacks during Server::DumpMetadata().
  • Persist the readable dump to ThunderInternals.txt next to the existing ThunderInternals.json post-mortem output.

Comment thread Source/Thunder/PluginServer.h Outdated
Comment thread Source/Thunder/PluginServer.h Outdated
Comment thread Source/Thunder/PluginServer.h Outdated
@nxtum

nxtum commented Jun 23, 2026

Copy link
Copy Markdown
Contributor Author
Thunder Worker Pool Post-Mortem

Pending requests:
  <none>

Thread 0x737ff400
  job: WorkerPool::Timer
  runs: 5

  #00 [0x76a1a926] /lib/libc.so.6
  #01 [0x76d17206] /usr/lib/libThunderCore.so.5
  #02 [0x76a28e70] /lib/libc.so.6
  #03 [0x76a1a926] /lib/libc.so.6
  #04 [0x76a53128] /lib/libc.so.6
  #05 [0x76a551de] /lib/libc.so.6 __pthread_cond_timedwait64 [425]
  #06 [0x76a5527a] /lib/libc.so.6 pthread_cond_timedwait [21]
  #07 [0x76d22ac6] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock(unsigned int) [205]
  #08 [0x76d297dc] /usr/lib/libThunderCore.so.5 Thunder::Core::StateTrigger<Thunder::Core::Thread::thread_state>::WaitState(unsigned int, unsigned int) const [47]

Thread <unavailable>
  job: <none>
  runs: 0

  <no thread id available; stack not captured>

Thread 0x75fff400
  job: <none>
  runs: 13

  #00 [0x76a1a926] /lib/libc.so.6
  #01 [0x76d17206] /usr/lib/libThunderCore.so.5
  #02 [0x76a28e70] /lib/libc.so.6
  #03 [0x76a1a926] /lib/libc.so.6
  #04 [0x76a53128] /lib/libc.so.6
  #05 [0x76a54fb6] /lib/libc.so.6 pthread_cond_wait [393]
  #06 [0x76d229de] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock() [47]
  #07 [0x76d22a18] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock(unsigned int) [31]
  #08 [0x554afe] Thunder Thunder::Core::StateTrigger<Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::state>::WaitState(unsigned int, unsigned int) const [47]
  #09 [0x568848] Thunder Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::Extract(Thunder::Core::ProxyType<Thunder::Core::IDispatch>&, unsigned int) [183]
  #10 [0x56a052] Thunder Thunder::Core::ThreadPool::Minion::Process() [557]
  #11 [0x56a17c] Thunder Thunder::Core::ThreadPool::Executor::Worker() [11]

Thread 0x757fe400
  job: <none>
  runs: 13

  #00 [0x76a1a926] /lib/libc.so.6
  #01 [0x76d17206] /usr/lib/libThunderCore.so.5
  #02 [0x76a28e70] /lib/libc.so.6
  #03 [0x76a1a926] /lib/libc.so.6
  #04 [0x76a53128] /lib/libc.so.6
  #05 [0x76a54fb6] /lib/libc.so.6 pthread_cond_wait [393]
  #06 [0x76d229de] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock() [47]
  #07 [0x76d22a18] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock(unsigned int) [31]
  #08 [0x554afe] Thunder Thunder::Core::StateTrigger<Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::state>::WaitState(unsigned int, unsigned int) const [47]
  #09 [0x568848] Thunder Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::Extract(Thunder::Core::ProxyType<Thunder::Core::IDispatch>&, unsigned int) [183]
  #10 [0x56a052] Thunder Thunder::Core::ThreadPool::Minion::Process() [557]
  #11 [0x56a17c] Thunder Thunder::Core::ThreadPool::Executor::Worker() [11]

Thread 0x74dff400
  job: <none>
  runs: 11

  #00 [0x76a1a926] /lib/libc.so.6
  #01 [0x76d17206] /usr/lib/libThunderCore.so.5
  #02 [0x76a28e70] /lib/libc.so.6
  #03 [0x76a1a926] /lib/libc.so.6
  #04 [0x76a53128] /lib/libc.so.6
  #05 [0x76a54fb6] /lib/libc.so.6 pthread_cond_wait [393]
  #06 [0x76d229de] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock() [47]
  #07 [0x76d22a18] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock(unsigned int) [31]
  #08 [0x554afe] Thunder Thunder::Core::StateTrigger<Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::state>::WaitState(unsigned int, unsigned int) const [47]
  #09 [0x568848] Thunder Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::Extract(Thunder::Core::ProxyType<Thunder::Core::IDispatch>&, unsigned int) [183]
  #10 [0x56a052] Thunder Thunder::Core::ThreadPool::Minion::Process() [557]
  #11 [0x56a17c] Thunder Thunder::Core::ThreadPool::Executor::Worker() [11]

Thread 0x743ff400
  job: <none>
  runs: 13

  #00 [0x76a1a926] /lib/libc.so.6
  #01 [0x76d17206] /usr/lib/libThunderCore.so.5
  #02 [0x76a28e70] /lib/libc.so.6
  #03 [0x76a1a926] /lib/libc.so.6
  #04 [0x76a53128] /lib/libc.so.6
  #05 [0x76a54fb6] /lib/libc.so.6 pthread_cond_wait [393]
  #06 [0x76d229de] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock() [47]
  #07 [0x76d22a18] /usr/lib/libThunderCore.so.5 Thunder::Core::Event::Lock(unsigned int) [31]
  #08 [0x554afe] Thunder Thunder::Core::StateTrigger<Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::state>::WaitState(unsigned int, unsigned int) const [47]
  #09 [0x568848] Thunder Thunder::Core::CategoryQueueType<Thunder::Core::ProxyType<Thunder::Core::IDispatch>, false>::Extract(Thunder::Core::ProxyType<Thunder::Core::IDispatch>&, unsigned int) [183]
  #10 [0x56a052] Thunder Thunder::Core::ThreadPool::Minion::Process() [557]
  #11 [0x56a17c] Thunder Thunder::Core::ThreadPool::Executor::Worker() [11]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants