You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2005/12/15 06:34:46 UTC

DO NOT REPLY [Bug 37458] - Datarace on org.apache.catalina.loader.WebappClassLoader

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=37458>.
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=37458





------- Additional Comments From mailtocf@163.com  2005-12-15 06:34 -------
(In reply to comment #1)
> Suggested fix?

This is one possible scence to cause an exeption: suppose two threads t1 and t2,
both are trying to load a same new class. t1 goes first and hit the line 1630,
definePackage(packageName, entry.manifest, entry.codeBase), and stops before the
method call. Then t2 goes ahead and it can hit the same method call too since
the entry.manifest is still not null at that time. And then t2 or t1 continues
and loads the class and sets entry.manifest at the end. After this, when the
other thread tries to finish the call to definePackage, an exception will be
thrown since entry.manifest and entry.codebase have become null now.

I haven't got any good solution so far. One could use a huge sync block to
protect the test on entry.manifest and the corresponding later change, but that
would make it inefficient. Another alternative is to catch the nullpointer
exception thrown by definePackage and ignore it if possible.

-- 
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: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org