LinkedList NullPointerException occurs after switched from IBM JVM 1.4.0 to 1.4.1

  • Follow


Hi,

I encounter a NullPointerException after I switched from IBM JVM 1.4.0 to
IBM JVM 1.4.1.

The component I use is:

Linux          7.3
IBM JVM    1.4.1
freemarker  1.5.2
tomcat       4.1.18

Please give any advice about this NullPointerException which I didn't
encounter in IBM JVM 1.4.0.

Here is the stack trace:
java.lang.NullPointerException
  at java.util.LinkedList$ListItr.next(LinkedList.java:510)
  at freemarker.template.expression.ExpressionBuilder.associateOperators(ExpressionBuilder.java)
  at freemarker.template.expression.ExpressionBuilder.buildExpression(ExpressionBuilder.java)
  at freemarker.template.expression.ExpressionBuilder.build(ExpressionBuilder.java)
  at freemarker.template.compiler.StandardTemplateParser.parseExpression(StandardTemplateParser.java)
  at freemarker.template.compiler.StandardTemplateParser.parseVariable(StandardTemplateParser.java)
  at freemarker.template.compiler.StandardTemplateParser.parseVariableInstruction(StandardTemplateParser.java)
  at freemarker.template.compiler.StandardTemplateParser.getNextInstruction(StandardTemplateParser.java)
  at freemarker.template.compiler.LinkedListTemplateBuilder.buildLinks(LinkedListTemplateBuilder.java)
  at freemarker.template.compiler.LinkedListTemplateBuilder.buildGenericBody(LinkedListTemplateBuilder.java)
  at freemarker.template.compiler.LinkedListTemplateBuilder.buildStatement(LinkedListTemplateBuilder.java)
  at freemarker.template.instruction.GenericStartInstruction.callBuilder(GenericStartInstruction.java)
  at freemarker.template.compiler.LinkedListTemplateBuilder.buildLinks(LinkedListTemplateBuilder.java)
  at freemarker.template.compiler.LinkedListTemplateBuilder.buildStatement(LinkedListTemplateBuilder.java)
  at freemarker.template.instruction.IfInstruction.callBuilder(IfInstruction.java)
  at freemarker.template.compiler.LinkedListTemplateBuilder.buildLinks(LinkedListTemplateBuilder.java)
  at freemarker.template.compiler.LinkedListTemplateBuilder.build(LinkedListTemplateBuilder.java)
  at freemarker.template.Template.compileText(Template.java)
  at freemarker.template.Template.compileFromStream(Template.java)
  at freemarker.template.Template.compileFromStream(Template.java)
  at freemarker.template.Template.compileFromFile(Template.java)
  at freemarker.template.Template.(Template.java)
  at freemarker.template.FileTemplateCache.loadTemplate(FileTemplateCache.java)
  at freemarker.template.FileTemplateCache.getLatestTemplate(FileTemplateCache.java)
  at freemarker.template.FileTemplateCache.getTemplate(FileTemplateCache.java)
  at org.mytest.HtmlTemplateController.getTemplate(HtmlTemplateController.java:73)
  at org.mytest.HtmlTemplateController.getTemplate(HtmlTemplateController.java:99)
  at org.mytest.MyServlet.doGet(MyServlet.java:101)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
  at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
  at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
  at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
  at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
  at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
  at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:261)
  at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:360)
  at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:632)
  at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:590)
  at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:707)
  at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
  at java.lang.Thread.run(Thread.java:568)


TIA
-Tohru



0
Reply jacoder (2) 7/7/2003 5:56:48 PM

On Mon, 07 Jul 2003 10:56:48 -0700, Tohru Kao <jacoder@yahoo.com>
wrote or quoted :

>  at java.util.LinkedList$ListItr.next(LinkedList.java:510)

possibly one implementation filters out null elements from a
LinkedList and other preserves them??

--
Canadian Mind Products, Roedy Green.
Coaching, problem solving, economical contract programming. 
See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.
0
Reply roedy (1019) 7/12/2003 5:56:46 PM


Tohru Kao <jacoder@yahoo.com> wrote in message news:<7qcjgv4oagp3ushf57c4gd5r991dbratcj@4ax.com>...
> Hi,
> 
> I encounter a NullPointerException after I switched from IBM JVM 1.4.0 to
> IBM JVM 1.4.1.
> 
> The component I use is:
> 
> Linux          7.3
> IBM JVM    1.4.1
> freemarker  1.5.2
> tomcat       4.1.18
> 
> Please give any advice about this NullPointerException which I didn't
> encounter in IBM JVM 1.4.0.
> 
> Here is the stack trace:
> java.lang.NullPointerException
>   at java.util.LinkedList$ListItr.next(LinkedList.java:510)
/snip/

You'll have to look at the source for LinkedList.java near
line 510 to see what it's trying to do. Most likely, it
is advancing to its next pointer and getting a null value.

The list is probably corrupted by a concurrent modification
by another thread. Iteration doesn't guarantee that it will
detect all such modifications. The LinkedList implementation
is not synchronized.

Thus, I suspect that the application that is using the
LinkedList is broken, rather than the LinkedList implementation.
0
Reply xarax (448) 7/12/2003 10:49:30 PM

xarax wrote:

> Tohru Kao <jacoder@yahoo.com> wrote in message
> news:<7qcjgv4oagp3ushf57c4gd5r991dbratcj@4ax.com>...
>> Hi,
>> 
>> I encounter a NullPointerException after I switched from IBM JVM 1.4.0 to
>> IBM JVM 1.4.1.
>> 
>> The component I use is:
>> 
>> Linux          7.3
>> IBM JVM    1.4.1
>> freemarker  1.5.2
>> tomcat       4.1.18
>> 
>> Please give any advice about this NullPointerException which I didn't
>> encounter in IBM JVM 1.4.0.
>> 
>> Here is the stack trace:
>> java.lang.NullPointerException
>>   at java.util.LinkedList$ListItr.next(LinkedList.java:510)
> /snip/
> 
> You'll have to look at the source for LinkedList.java near
> line 510 to see what it's trying to do. Most likely, it
> is advancing to its next pointer and getting a null value.
> 
> The list is probably corrupted by a concurrent modification
> by another thread. Iteration doesn't guarantee that it will
> detect all such modifications. The LinkedList implementation
> is not synchronized.
> 
> Thus, I suspect that the application that is using the
> LinkedList is broken, rather than the LinkedList implementation.

This analysis is spot on.  What has changed in 1.4.1 is that the 
next and prev pointers of a removed list element are set to null.
So perhaps one thread is removing an object from a list, while 
another is iterating through the list.  You might have got away 
with this before, but now a NullPointerException will be thrown.

Neil
0
Reply nmasson 7/14/2003 8:12:04 AM

3 Replies
47 Views

(page loaded in 0.082 seconds)


Reply: