DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=33743>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=33743

           Summary: WebappClassLoader race condition
           Product: Tomcat 5
           Version: 5.0.28
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
        AssignedTo: tomcat-dev@jakarta.apache.org
        ReportedBy: [EMAIL PROTECTED]
                CC: [EMAIL PROTECTED]


WebAppClassLoader may fail if concurrent threads try to load a not-yet-loaded 
class.

Scenario:
two threads enter loadClass(name, resolve) (line 1214) concurrently.
none of them finds a loaded class, so both enter findClass (827) and
findClassInternal (1559). 

Now one thread goes ahead, finds the resource and defines the class.
Consequently, it sets entry.binaryContent to null (1633). Thread 2 now
checks binaryContent for null (1572) and throws a ClassNotFoundException.

In the field, this error occurs, if you start Tomcat and load a number of
different jsps concurrently that all use the same tag class.

I also have a standalone testcase where I made WCL#addRepository(String,File)
public.

As it seems, #loadClass(String, boolean) (1211) should be synchronized, as in
the superclasses.


Matthias

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to