I'm having issues with getting a stack trace for a real time thread. I keep getting the following:
so i went inside my factory where i initialize my RT Threads, and added the following:
I still wasnt able to get a stack trace. So then i thought, maybe i had to make that same call in each thread. So inside one of my classes that runs on a RT Thread, i added the above logic. Still nothing..
So my process is multithreaded and only some of the threads are realtime threads. From within a realtime thread i can execute a full thread dump no problem. However, if i were to attempt to execute a thread dump on a realtime thread (within a different thread) i get that log statement stating i need to enable stack tracing.
There is no stack trace. At least that's what im getting from the output. My guess is RTSJ sees pausing the thread to get a full stack trace causes jitter and makes the system just that much more undeterministic. Therefore by default they disable stack tracing for realtime threads (when called from a different thread). Here is the entire output:
INFO [ProcessMonitor InputQ-1 Cell] stax.StackTraceAspect: (21/Dec/2010 17:47:22.177) 21/Dec/2010 17:47:22.177
Missed Heartbeat Trace for CELL [ShapeCell]
Strack Trace Dump
"ShapeCell InputQ-1 Cell" id  priority  state [WAITING] alive [true] daemon [false] native [false] suspended [false]
queue: depth  max size 
The "ProcessMonitor InputQ-1" is a non-realtime thread attempting to get a stack trace of "ShapeCell InputQ-1" thread (which is a realtime thread)
I believe the developers of RTSJ are probably going to have to answer this question. I have a followup meeting with them in the near future and will post their response.