The current thread is the thread that was executing when the fault occurred. The 23 lines starting at line 10 of the output gives information relating to the current thread:
TheCurrentThread=64039408
THREAD at 64039408 VPTR=f803423c AccessCount=3 Owner=64038d5c
Full name test2.exe::Main
Thread MState READY
Default priority 16 WaitLink Priority 16
ExitInfo 2,100,USER
Flags 00000004, Handles 640330bc
Supervisor stack base 6571f000 size 1000
User stack base 00402000 size 2000
Id=26, Alctr=00600000, Created alctr=00600000, Frame=00000000
Trap handler=00000000, ActiveScheduler=00000000, Exception handler=00000000
TempObj=00000000 TempAlloc=00000000 IpcCount=00000000
NThread @ 640396b0 Pri 16 NState READY
Next=640396b0 Prev=640396b0 Att=03 iUserContextType=0b
HeldFM=00000000 WaitFM=00000000 AddrSp=64038d5c
Time=17 Timeslice=20 ReqCount=0
SuspendCount=0 CsCount=1 CsFunction=fffffffe
SavedSP=6571ff34 ExtraContext=00000000 ExtraContextSize=0000
DACR 63990000
R13_USR 6571ff88 R14_USR f8025bc0 SPSR_SVC 10000004
R4 f8033794 R5 64039408 R6 640396b0 R7 f8028518
R8 640396b0 R9 640396b0 R10 00000000 R11 f80284d8
PC 00000000
THREAD at 64039408 VPTR=f803423c AccessCount=3 Owner=64038d5c
The THread at field contains a pointer to the DThread object representing the thread.
The AccessCount field contains the reference count on the thread object.
The owner field contains a pointer to the object that owns this DThread object.
Full name test2.exe::Main
The thread name is the part after the colons. The part before the colons is the process name. This means that the thread is called Main inside the process test2.exe.
Thread MState READY
Default priority 16 WaitLink Priority 16
ExitInfo 2,100,USER
The information that characterises the thread exit is described by ExitInfo; this is shown as exit type, exit reason and exit category. In this example:
the thread has panicked, as indicated by: exit type 2; See also TExitType.
the panic category was: USER
the panic number was:100
the thread was running or it was in a ready-to-run state: MState READY
The priority shown is for the underlying thread, see also Process and thread priorities.
Flags 00000004, Handles 640330bc
The Flags field contains information about the state of the thread. The possible values in this field are defined by the KThread... constants in u32std.h. While the symbols are internal to Symbian OS, the following table summarises the values and their meaning.
|
Flags 00000004, Handles 640330bc
The Handles field contains the address of a DObjectIx object that contains the handles owned by the thread.
Supervisor stack base 6571f000 size 1000
User stack base 00402000 size 2000
These fields give the base address and size, in bytes, of the kernel and user stacks respectively.
Id=26, Alctr=00600000, Created alctr=00600000, Frame=00000000
The Id field contains the thread id.
The Alctr field contains a pointer to the current RAllocator instance used for heap allocation.
The Created alctr field contains a pointer to the original RAllocator instance used for heap allocation. This may be different from the current instance if User::SwitchAllocator() has been called.
The Frame field contains a pointer to the current trap frame, an instance of the TTrap class, on the cleanup stack.
Trap handler=00000000, ActiveScheduler=00000000, Exception handler=00000000
The Trap handler field contains a pointer to the current trap handler, an instance of TTrapHandler, for the cleanup stack.
The ActiveScheduler field contains a pointer to the current active scheduler.
The Exception handler field contains a pointer to the current user-side exception handler.
TempObj=00000000 TempAlloc=00000000 IpcCount=00000000
The Tempobj field contains a pointer to an instance of a DObject derived class that must be closed when the thread terminates.
The TempAlloc field contains a pointer to a kernel heap cell that must be freed when the thread terminates. Both this and Tempobj are used to avoid leaks if the thread terminates unexpectedly.
The IpcCount field contains the number of messages currently queued to this thread.
NThread @ 640396b0 Pri 16 NState READY
Next=640396b0 Prev=640396b0 Att=03 iUserContextType=0b
The NThread field contains a pointer to the underlying nanokernel thread object, an instance of the NThread class.
The Pri field contains the current priority of the underlying nanokernel thread.
The NState field shows the current state of the underlying nanokernel thread. Note that this state is often referred to as the N-state, as compared to the to M-state, the state of a Symbian OS thread. See the Thread state summary.
The Next field points to the next nanokernel thread object.
The Prev field points to the previous nanokernel thread object.
The Att field contains the nanokernel thread attributes, which is an 8-bit mask that controls how the thread is scheduled in certain cases. Two attributes are defined:
|
HeldFM=00000000 WaitFM=00000000 AddrSp=64038d5c
The HeldFM field contains a pointer to the fast mutex held by this thread; this is NULL if no fast mutext was held.
The WaitFM field contains a pointer to the fast mutex that this thread was waiting on; this is NULL if this thread was not waiting on a fast mutex.
The AddrSp field is the address space identifier used by the scheduler to determine whether an address space change is required when scheduling in a new thread.
Time=17 Timeslice=20 ReqCount=0
The Time field contains the number of nanokernel ticks, usually in milliseconds, to go before the thread is preempted.
The Timeslice field contains the maximum number of ticks for which the thread can run before being preempted.
The ReqCount contains the request semaphore counter. If the value is negative, then the thread is blocked waiting for a request to complete; if it is positive, then one or more requests have completed.
SuspendCount=0 CsCount=1 CsFunction=fffffffe
SavedSP=6571ff34 ExtraContext=00000000 ExtraContextSize=0000
DACR 63990000
R13_USR 6571ff88 R14_USR f8025bc0 SPSR_SVC 10000004
R4 f8033794 R5 64039408 R6 640396b0 R7 f8028518
R8 640396b0 R9 640396b0 R10 00000000 R11 f80284d8
PC 00000000
The SuspendCount field contains the number of times that the thread has been suspended.
The CsCount field critical section counter. When this value is greater than zero, then the thread is in a critical section and cannot be suspended or killed.
The remaining content is a list of register values. Note that they are not the register values when the thread panicked. They are the values in the registers the last time that this thread was pre-empted.