Yes, I am. :)

The common rule of not executing Java under native lock applies to JNI too.

Regards,
   Pavel.
On 10/12/06, Alexey Varlamov <[EMAIL PROTECTED]> wrote:

12.10.06, Pavel Pervov<[EMAIL PROTECTED]> написал(а):
> Alexey,
>
> The main issue here is why classloading (?) calls to GC under native
lock.
> All the rest is just a consequences.
> Could you, please, show the point (file:line) where gc_alloc is called
under
> lock?

Oh, probably you are right. The faulty method is
Java_java_lang_VMClassRegistry_getSystemPackages()
vm\vmcore\src\kernel_classes\native\java_lang_VMClassRegistry.cpp 389-414

Will fix.
--
Alexey

>
> Thanks,
>     Pavel.
>
> On 10/12/06, Alexey Varlamov <[EMAIL PROTECTED]> wrote:
> >
> > Guys,
> >
> > I've found another deadlock scenario recently, see HARMONY-1833 [1]:
> >
> > "deadlocks happening between main thread (MT) and finalizer thread
(FT):
> > 1) MT performs classloading, it grabs ClassLoader::_lock;
> > 2) GC happens, FinalizerThread.startFinalization() is called, FT
> > activates;
> > 3) FT invokes some finalize() method, compilation starts and grabs
> > g_compileLock;
> > 4) FT waits for ClassLoader::_lock to allocate code_chunk_info;
> > 5) MT proceeds to compilation of FinalizerThread.spawnBalanceThreads()
> > and waits for g_compileLock;
> >
> > I believe this scenario can be fixed via separating locks for
> > classloading and loader-pool allocations."
> >
> > [1] http://issues.apache.org/jira/browse/HARMONY-1833
> >
> > --
> > Alexey
> >
> > 12.10.06, Gregory Shimansky<[EMAIL PROTECTED]> написал(а):
> > > On Wednesday 11 October 2006 16:15 Pavel Pervov wrote:
> > > > (Branching from original thread as this is different problem than
in
> > the
> > > > root message.)
> > >
> > > Wasn't it the same problem, just happening on classlib
initialization? I
> > think
> > > the scenario is the same.
> > >
> > > > The following scenario will fail:
> > > >
> > > > 1) JIT compiles some method and resolves some class "A" through
user
> > > > defined class loader
> > > > 2) user define class loader loads class "A" and triggers
compilation
> > of
> > > > some of its methods
> > > > 3) this method happens to depend on class "A", and, thus, JIT
resolves
> > the
> > > > class "A" through the same class loader
> > > >
> > > > Voila! We have the described situation.
> > >
> > > A synthetic test for drlvm could really help to emphasize the
problem.
> > Then we
> > > can run this test on all other VMs with possible modifications. BTW
> > sun's
> > > hotspot should compile a method if it is called several times, so
user
> > > defined class loader could do something like calling this method
many
> > times
> > > to trigger its compilation.
> > >
> > > --
> > > Gregory Shimansky, 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