On Tue, 15 May 2001, Blankenship, David wrote:
> OS: Windows 2000
> JDK: Sun JDK 1.3
> JACL: pulled from CVS May 14, 2001
>
> I have been using Jacl 1.2.6. The other day I ran into a problem with the
> reflect object table and hash codes. I noticed that this problem had been
> fixed last July, so I decided to get the latest source from CVS.
>
> I built the source using Jakarta ORO 2.0.1. I went to run my application and
> got the following exception:
I am not sure what you need the ORO code for. Jacl 1.3 has a new
implementation of the regexp command that does not depend on
the ORO lib.
> java.lang.IllegalAccessError: try to access method
> tcl.lang.Interp.dispose()V from class
> com.klatencor.catalyst.gap.control.JaclStrategyAction
>
> I noticed that dispose is now part of EventuallyFreed, and the dispose
> method is declared at package scope.
Humm, that does seem off. Christian, could you comment on how
this? Should the dispose() method in the EventuallyFreed superclass
be public?
> To work around this problem, I did two things. First, I added a dispose
> method to Interp that called super.dispose(). When I did this, I got the
> following exception.
>
> java.lang.NullPointerException
> at tcl.lang.NamespaceCmd.findCommand(NamespaceCmd.java:1775)
> at tcl.lang.Interp.deleteCommand(Interp.java:1546)
> at tcl.lang.ReflectObject.dispose(ReflectObject.java:612)
> at tcl.lang.TclObject.release(TclObject.java:211)
> at tcl.lang.Interp.resetResult(Interp.java:2088)
> at tcl.lang.Interp.eventuallyDispose(Interp.java:564)
> at tcl.lang.EventuallyFreed.dispose(EventuallyFreed.java:130)
> at tcl.lang.Interp.dispose(Interp.java:432)
Humm, that is odd. This seems to be in the new code related
to interp resolvers.
if (cxtNs.resolver != null || interp.resolvers != null) {
Could you try to create a test case that reproduces this exception?
This is new code so it may have some edge cases that need to be
tested.
> Second, I removed the call to Interp.dispose from my application. When I ran
> the application, noticed that the memory of the application seems to
> continue to grow. My application normally hovers around 29 Meg. When run
> with Jacl 1.3 without the Interp.dispose call, I have let it grow to over 50
> Meg without slowing down on the memory growth.
I think you need those dispose() calls in there.
> What's the status of the Interp.dispose call? Is it still user callable? Did
> I just build the wrong code, or build it incorrectly? If I manage to get rid
> of the NullPointerException should that solve my problem?
I think we need to make the dispose method public. It seems
to have been public in the 1.2 version so I think we need
to fix that.
Mo
|