So where are we here?

On Sep 28, 2006, at 12:41 AM, Evgueni Brevnov wrote:

On 9/28/06, Weldon Washburn <[EMAIL PROTECTED]> wrote:
On 9/26/06, Evgueni Brevnov <[EMAIL PROTECTED]> wrote:
>
> On 9/27/06, Andrey Chernyshev <[EMAIL PROTECTED]> wrote:
> > (3)
> > One more lock is added - hythread_lib_lock. How is that differ from > > the hythread_global_lock that we already have? Each extra lock to the
> > system may add more possibilities for deadlocks, as well as can
> > negatively impact the scalability (unless some of the existing locks
> > are split).
> hythread_lib_lock acquires exactly the same lock as
> hythread_global_lock. Probably I miss something but we need to be
> compatible with IBM threading library now. This library has such
> function. That's why I added it. Sounds right?


Well, this sort of, kind of sounds right but not quite. Its a little more subtle than being compatible with IBM threading library. The first goal is to identify the parts of IBM threading library that are JVM independent. It makes sense for DRLVM to be compatible with the independent parts. This
should be a nobrainer.

The parts of IBM threading library that assume a specific JVM implementation will be a problem. We will need to find a solution that is endorsed by all the stakeholders (including J9 folks). The hythread_global_lock falls into this category. For starts, I would like to see a concise description from the portlib owners on what hythread_global_lock protects, which locks have to be held before grabbing this lock, are there any restrictions on what system calls can be made while holding this lock (like sleep or wait), etc.

Weldon, I completely agree with what your are saying. It's common
problem of current hythread that should be resolved some how. I just
go inline with current implementation and added two missing functions.
Missing these can lead to the same problems as with hythread_exit
discussed  in another thread "[drlvm] [launcher] Executable hangs".


To get a better idea what's in the patch.diff, I printed it out. Its 120+ pages. Quite a big patch! Most of it looks like straight forward JNI interface glue. There are some tricky parts. I would like to know the design review process for these parts. Using grep, I found 20 locations where ...suspend_enable... and ...suspend_disable... have been added. And 25 locations where enable/disable have been removed. Failure in this logic can lead to incorrect reference pointer enumeration. These are probably the hardest bugs to find. Please tell us who has looked at this code in depth.
Only me and you :-) Honetsly I think it happpens now....

Are there any known design flaws in it?
I can think of two possible problems we may want to discuss.
1) Should native threads have "daemon" status or its completely java
notion? This is TM related thing.
2) Should we attach thread to VM before attaching it to TM by calling
jthread_atatch OR jthread_attach should callback VM to attach a thread
to it? I didn't change original design of TM here ...... it implements
second choice.


I also notice APIs called tmn_suspend_enable(), hythread_suspend_enable() -- are these simply different names for the same binary executible. Or
different binaries that do the same thing??

No, this is not just different names. tm_suspend_enable asserts that
thread is in disabled state before calling hythread_suspend_enable (in
debug mode only).

Thanks
Evgueni


--
> Weldon Washburn
> Intel Middleware Products Division



---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to