Thanks for your feedback.

> Ugh, I don't find this to be helpful information at all.
It's useful, I explained already why, see the CSV screenshot.
We don't have a rexx debugger like the orexx workbench showing the call stack.
But we can have at least the top-level of the call stack, everywhere.

> I can determine that information just by looking at the thread numbers,
When an invocation is popped, you have no information in the trace to tell you 
in which method/routine you are back.
This is also true in mono thread.
You would need something opposite to >I>, like <I< to remind the context.
With the activation identifier, you retrieve easily the nth >I> corresponding 
to this context.
And in the CSV, you have it immediately.

> the activation number has no real connection to any concept in the 
> interpreter. 

It's related to .context and .context~stackFrames[1]


This extended trace is what I needed 13 years ago to analyse several deadlocks.
All the infos were useful.
Each time, the debug process was the same:
- look at the last line (deadlocked), it’s for the thread Tn and the variable 
pool Vn.
- move up in the trace until I find  another thread Tm using this same variable 
pool Vn and having a lock.
- from here, I know the 2 competing methods.
- and the difficult part begins: find how to fix…


To me this seems absolutely contrary to the Rexx principles.   If developers 
need this kind of information, cannot this be achieved by other, less visible 
and less ugly, means?

Ugly? That is ugly:
00000000afea2380 000000001092bb00 0000000000000000 00000       1 *-* 
.demo~new~exec(1)
00000000afea2380 000000001092bb00 0000000000000000 00000         >E>   .DEMO => 
"The DEMO class"
00000000afea2380 000000001092bb00 0000000000000000 00000         >M>   "NEW" => 
"a DEMO"
00000000afea2380 000000001092bb00 0000000000000000 00000         >L>   "1"
00000000afea2380 000000001092bb00 0000000000000000 00000         >A>   "1"
00000000afea2380 0000000010934d80 0000000010934ff0 00000         >I> Method 
"EXEC" with scope "DEMO" in package 
"/local/rexx/oorexx/executor/sandbox/jlf/demos/concurrency_trace.rex".
00000000afea2380 0000000010934d80 0000000010934ff0 00001*      8 *-* use arg id
00000000afea2380 0000000010934d80 0000000010934ff0 00001*        >>>   "1"
00000000afea2380 0000000010934d80 0000000010934ff0 00001*        >=>   ID <= "1"
That was the MT trace generated 13 years ago.
It was transformed in a “human readable” format with beautiful identifiers by a 
rexx script :-)
 


_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to