Artem, your fix works for me.
Digging in the implementation I have got your idea. I like the fix :)
--
Ivan

On 9/20/06, Ivan Volosyuk <[EMAIL PROTECTED]> wrote:
I have traced down problem to implementation of thin locks.
Here is what I get, look at the stack:
  hythread_suspend_other()
  unreserve_lock()
  hythread_thin_monitor_try_enter()
  <helper>

All this code is executed suspend disabled mode and is not a safe point.
Suppose two threads want to unreserve lock of each other. We can have
a deadlock.
I have just made a function:
    hythread_try_suspend_other()
which can be used safely from suspend disabled section and will
prevent deadlock.
** Now all tests pass for me.**

I'm going now to check your patch if it also fixes the synchronization issue.
--
Ivan

On 9/20/06, Artem Aliev <[EMAIL PROTECTED]> wrote:
> Ivan,
>
> We do a lot for this cyclic suspend problem,
> I hope we does it right. I think the problem is in typo that was done
> in last patch.
> Fix attached. Could you please verify it.
> I will also attach it to the HARMONY-1421
>
> ------------------------------------
> we already try to has global lock for suspend_other().
> Here is a deadlock scenario:
>
> thread1:                                                                
thread2
>
> assert(hythread_is_suspend_enabled());
> global_lock();
> supend(thread2);
> global_unlock();
> ...
>
> assert(hythread_is_suspend_enabled());
>                                                               global_lock();
>                                                               supend(thread1);
>                                                               global_unlock();
>                                                             ....
> safe_point() // stop here                        safe_point() // stop
> here
> ------------------------------------------------------------
>
> Thanks
> Artem

--
Ivan
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]

Reply via email to