Re: [tcljava-user] Help with Jacl 1.3
Brought to you by:
mdejong
From: Mo D. <md...@cy...> - 2001-05-20 21:44:52
|
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 |