harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Geir Magnusson Jr <g...@pobox.com>
Subject Re: [drlvm] HARMONY-956 - problem w/ DRLVM classloader
Date Thu, 10 Aug 2006 16:14:09 GMT


Anton Luht wrote:
> Hello,
> 
> DRLVM has  an (undocumented?) option to switch off verifier
> -Dvm.use_verifier=false . With this option activemq starts without
> crash. Verifier seem to be the blocker.

Aw... I was hoping you'd tell us what the problem was.   Any clue?

geir

> 
> On 8/8/06, Geir Magnusson Jr <geir@pobox.com> wrote:
>>
>>
>> Gregory Shimansky wrote:
>> > On Tuesday 08 August 2006 00:01 Geir Magnusson Jr wrote:
>> >> Ok - I made that fix and still seem to have a problem, even after a
>> >> clean rebuild.  I guess I should figure out how to turn on the
>> trace...
>> >
>> > The problem is that class loader does not chain VerifyError to
>> > NoClassDefFoundError so debugging such problems is diffucult without
>> tracing.
>> > I think this is a place for improvement in drlvm.
>> >
>> > I tried to fix the problem and found out that verifier just doesn't
>> understand
>> > exception handlers which point to the code length address (code end
>> + 1). It
>> > is a surprise that this problem didn't appear earlier.
>>
>> App-oriented testing... :)
>>
>> >
>> > My patch attached to JIRA attempts to fix the problem in verifier
>> only, the
>> > application still fails to start. In default mode it exits silently,
>> I didn't
>> > find any exception logs or something. When using interpreter -Xint
>> it fails
>> > with ArrayStoreException still without any stack trace. I'll try to
>> find out
>> > what is happening.
>>
>> Nice work.  Thanks for doing this...
>>
>> geir
>>
>> >
>> >> Anton Luht wrote:
>> >>> Hello,
>> >>>
>> >>> The problem is with verifier.
>> >>>
>> >>> The code in Verifier.cpp:
>> >>>
>> >>>        if( ( start_pc >= len ) || ( end_pc >= len ) || (
>> handler_pc >=
>> >>> len ) )
>> >>> ...
>> >>>
>> >>>            result = VER_ErrorHandler;
>> >>>
>> >>> I've modified error logging a bit to log values of start_pc, end_pc,
>> >>> handler_pc and len and that's the output:
>> >>>
>> >>>
>> >>> Loading message broker from: xbean:activemq.xml
>> >>> vf_debug: VerifyError: (class:
>> >>> edu/emory/mathcs/backport/java/util/concurrent/lo
>> >>> cks/ReentrantLock$NonfairSync, method: lockInterruptibly()V, len:
>> 103,
>> >>> start_pc:
>> >>> 87, end_pc: 103, handler_pc: 21) Handler pc is out of range
>> >>> vf_debug: verifying class
>> >>> edu/emory/mathcs/backport/java/util/concurrent/locks/R
>> >>> eentrantLock (method <init>()V) couldn't load class
>> >>> "edu/emory/mathcs/backport/j
>> >>> ava/util/concurrent/locks/ReentrantLock$NonfairSync"
>> >>> vf_debug: VerifyError:
>> >>> edu/emory/mathcs/backport/java/util/concurrent/locks/Reen
>> >>> trantLock$NonfairSync
>> >>> Failed to execute main task. Reason: java.lang.NoClassDefFoundError:
>> >>> edu/emory/m
>> >>> athcs/backport/java/util/concurrent/locks/ReentrantLock$NonfairSync
>> >>>
>> >>> I'm not an expert in verification but seems like
>> >>>
>> >>> end_pc >= len
>> >>> should be replaced with
>> >>> end_pc > len
>> >>>
>> >>> On 8/5/06, Geir Magnusson Jr <geir@pobox.com> wrote:
>> >>>> Anyone interested? :)
>> >
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
> 
> 


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message