This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 50991

Summary: Exception on startup
Product: platform Reporter: _ tboudreau <tboudreau>
Component: FilesystemsAssignee: Petr Nejedly <pnejedly>
Status: RESOLVED FIXED    
Severity: blocker CC: jtulach
Priority: P3 Keywords: RANDOM, THREAD
Version: 4.x   
Hardware: Macintosh   
OS: Mac OS X   
Issue Type: DEFECT Exception Reporter:

Description _ tboudreau 2004-10-30 05:00:27 UTC
Occurs intermittently with a relatively new userdir, logged as 
informational, but definitely looks disturbing

INFORMATIONAL *********** Exception occurred ************ at 
5:26 AM on Oct 30, 2004
java.lang.IndexOutOfBoundsException: Index: 444184766, Size: 
83
        at java.util.ArrayList.RangeCheck(ArrayList.java:507)
        at java.util.ArrayList.get(ArrayList.java:324)
[catch] at 
org.netbeans.core.projects.cache.BinaryFS$BFSFile.lastModified(B
inaryFS.java:666)
        at 
org.openide.filesystems.MultiFileObject.lastModified(MultiFileObj
ect.java:408)
        at 
org.openide.filesystems.MultiFileObject.lastModified(MultiFileObj
ect.java:408)
        at 
org.openide.loaders.InstanceDataObject$Ser.instanceOf(Instance
DataObject.java:1124)
        at 
org.openide.loaders.InstanceDataObject.instanceOf(InstanceData
Object.java:672)
        at 
org.openide.loaders.FolderLookup$ICItem.instanceOf(FolderLoo
kup.java:456)
        at 
org.openide.util.lookup.InheritanceTree$1VerifyJob.before(Inheri
tanceTree.java:333)
        at 
org.openide.util.lookup.AbstractLookup$ISE.recover(AbstractLoo
kup.java:1132)
        at 
org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.
java:374)
        at 
org.openide.util.lookup.ProxyLookup$R.initResults(ProxyLookup
.java:238)
        at 
org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyL
ookup.java:424)
        at 
org.openide.util.lookup.ProxyLookup$R.beforeLookup(ProxyLoo
kup.java:442)
        at 
org.openide.util.lookup.ProxyLookup$R.myBeforeLookup(ProxyL
ookup.java:430)
        at 
org.openide.util.lookup.ProxyLookup$R.computeResult(ProxyLo
okup.java:355)
        at 
org.openide.util.lookup.ProxyLookup$R.allInstances(ProxyLooku
p.java:329)
        at 
org.openide.util.SharedClassObject$1SOLoader.resultChanged(S
haredClassObject.java:490)
        at 
org.openide.util.lookup.AbstractLookup.notifyListeners(Abstract
Lookup.java:405)
        at 
org.openide.util.lookup.ProxyLookup$R.resultChanged(ProxyLoo
kup.java:415)
        at 
org.openide.util.lookup.ProxyLookup.setLookups(ProxyLookup.j
ava:109)
        at 
org.netbeans.core.NbTopManager$Lkp.doInitializeLookup(NbTo
pManager.java:812)
        at 
org.netbeans.core.NbTopManager$Lkp.modulesClassPathInitializ
ed(NbTopManager.java:795)
        at 
org.netbeans.core.modules.NbInstaller.load(NbInstaller.java:231)
        at 
org.netbeans.core.modules.ModuleManager.enable(ModuleMana
ger.java:869)
        at 
org.netbeans.core.modules.ModuleList.installNew(ModuleList.jav
a:350)
        at 
org.netbeans.core.modules.ModuleList.trigger(ModuleList.java:
284)
        at 
org.netbeans.core.modules.ModuleSystem.restore(ModuleSyste
m.java:253)
        at org.netbeans.core.NonGui.run(NonGui.java:369)
        at org.netbeans.core.Main.run(Main.java:170)
        at 
org.netbeans.core.NbTopManager.getNbTopManager(NbTopMan
ager.java:239)
        at 
org.netbeans.core.NbTopManager.get(NbTopManager.java:188)
        at org.netbeans.core.Main.start(Main.java:312)
        at 
org.netbeans.core.TopThreadGroup.run(TopThreadGroup.java:
90)
        at java.lang.Thread.run(Thread.java:552)
Comment 1 rmatous 2004-11-08 08:33:38 UTC
Petr, please look at it.
Comment 2 Petr Nejedly 2004-11-08 09:00:23 UTC
Very strange. Did it happen again? Do you have your userdir with
umnodified layer.bin?
Comment 3 Petr Nejedly 2004-11-08 12:22:54 UTC
Now I probably got it.
It have to be a race condition on the lastModified variable.
Two threads calling lastModified at once, both finding the
lastModified variable negative (index into array).
First of them resolves the real value and stores it, then the second
finds the real value and treats it like the index.

It should be very unlikely to happen, so I won't fix it for 4.0.
Comment 4 Petr Nejedly 2005-02-23 15:04:13 UTC
Fixed.
core/src/org/netbeans/core/projects/cache/BinaryFS.java,v1.15