Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 341393

Summary: Possible NPE on shutdown
Product: [Eclipse Project] Equinox Reporter: Ian Bull <irbull>
Component: p2Assignee: P2 Inbox <equinox.p2-inbox>
Status: RESOLVED WORKSFORME QA Contact:
Severity: major    
Priority: P3 CC: daniel_megert, pascal
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Ian Bull CLA 2011-03-30 12:54:49 EDT
On shutdown, we may hit an NPE trying to lock an artifact repository. I managed to hit this while testing (I had some break points set, so this might not be a 'normal' execution).

Exception in thread "Thread-3" java.lang.NullPointerException
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getLockLocation(SimpleArtifactRepository.java:1401)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.canLock(SimpleArtifactRepository.java:1345)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.addDescriptor(SimpleArtifactRepository.java:356)
	at org.eclipse.equinox.p2.repository.artifact.spi.AbstractArtifactRepository.addDescriptor(AbstractArtifactRepository.java:65)
	at org.eclipse.equinox.p2.tests.artifact.repository.BatchExecuteArtifactRepositoryTest$8$1$1.run(BatchExecuteArtifactRepositoryTest.java:250)
Comment 1 Ian Bull CLA 2011-04-21 13:28:23 EDT
I'm going to mark this as invalid as I can't reproduce it.
Comment 2 Dani Megert CLA 2011-07-29 01:08:24 EDT
Our build just failed due the NPE:


Caused by: /builds/I201107282000/org.eclipse.releng.basebuilder/plugins/org.eclipse.pde.build_3.7.0.v20110512-1320/scripts/genericTargets.xml:241: A problem occured while invoking the director.
	at org.eclipse.equinox.p2.director.app.ant.DirectorTask.execute(DirectorTask.java:82)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
	at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:390)
	at org.apache.tools.ant.Target.performTasks(Target.java:411)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
	at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
	at org.eclipse.ant.internal.core.ant.EclipseSingleCheckExecutor.executeTargets(EclipseSingleCheckExecutor.java:30)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
	at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:442)
	... 36 more
Caused by: java.lang.NullPointerException
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getLockLocation(SimpleArtifactRepository.java:1443)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.canLock(SimpleArtifactRepository.java:1384)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.(SimpleArtifactRepository.java:328)
	at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepositoryFactory.create(SimpleArtifactRepositoryFactory.java:134)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.factoryCreate(ArtifactRepositoryManager.java:61)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.doCreateRepository(AbstractRepositoryManager.java:286)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.createRepository(ArtifactRepositoryManager.java:49)
	at org.eclipse.equinox.internal.p2.artifact.repository.ArtifactRepositoryManager.restoreSpecialRepositories(ArtifactRepositoryManager.java:133)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.restoreRepositories(AbstractRepositoryManager.java:995)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.removeRepository(AbstractRepositoryManager.java:909)
	at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.removeRepository(AbstractRepositoryManager.java:901)
	at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.cleanupRepositories(DirectorApplication.java:385)
	at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.run(DirectorApplication.java:999)
	at org.eclipse.equinox.p2.director.app.ant.DirectorTask.execute(DirectorTask.java:79)
Comment 4 Pascal Rapicault CLA 2014-04-08 15:35:24 EDT
this no longer seems to be possible