| Summary: | ClassNotFoundException while shutting down a self-hosted session | ||
|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Douglas Pollock <douglas.pollock> |
| Component: | UI | Assignee: | JDT-UI-Inbox <jdt-ui-inbox> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | andre_weinand, deboer, pascal, philippe_mulet |
| Version: | 3.0 | ||
| Target Milestone: | 3.1 M7 | ||
| Hardware: | PC | ||
| OS: | Linux-GTK | ||
| Whiteboard: | |||
|
Description
Douglas Pollock
AllTypesCache should not run after shutdown(), or shutdown() should wait for AllTypesCache to finish. Moving to JDT UI for comments. Results from investigating into the problem: - on shutdown, JDT/UI joins with the AllTypesChange using a join(1000) - so it might happen that the AllTypeCache thread is still running although JDT/UI finish the shutdown. However, even if JDT/UI would wait until the AllTypeChange has finished, this situation can occur since JDT/UI can't avoid that upper level plug-ins are shutdown. In the specific example it would help since JDT/UI requires org.eclipse.jdt.launching. But consider a scenario where the classpath container initializer is contributed by a plug-in not required by JDT/UI. This is the case for the PDE container we are using. In this scenario PDE is already stpped but JDT/Core still wants to make upcalls into PDE. CCing Philippe since one solution would be to protect the class path container initialization against this. Douglas, does this happen when you shutdown Eclipse right after you started it ? Philippe, can you comment on how the class path initalization works. I always thought that they are only initialized once and this tyically happens very "early" since the All types cache gets populated after the workbench is active after a certain delay. Container gets initialized on demand. If nobody asks, then it could occur that first opportunity is during shutdown. We could add protection when instantiating extensions, but I believe this is rather a platform bug. Dup of bug 64134 Dirk: I'm not sure, but this is possible. The next time it happens, I will try to let you know how long it was after start-up. Philippe, when core runtime throws an CoreException in this scenario on shutdown will this cause any harm to the JavaModel on shutdown. E.g. loss of data. As far as I can interpret it it shouldn't. It will traverse us, but we should be left consistent. Note that we deal normally with situations where CoreException are occurring. Given that this will not cause any harm to the workspace (except the exception in the log) and we haven't seen this (can from our stand point only happen if you startup and shutdown without having class path containers initialized) I opt to do nothing here for 3.0. *** Bug 67681 has been marked as a duplicate of this bug. *** *** Bug 75657 has been marked as a duplicate of this bug. *** Fixed by removing the all types cache. |