https://bz.apache.org/bugzilla/show_bug.cgi?id=58519

            Bug ID: 58519
           Summary: org.apache.catalina.loader.WebappClassLoaderBase.check
                    StateForClassLoading throwing
                    java.lang.IllegalStateException: Can't overwrite cause
           Product: Tomcat 8
           Version: trunk
          Hardware: PC
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: kaszaq+bz.apache....@gmail.com

Hi,
Recently I had catalina log grow in few seconds to enormous sizes, partially
due to problems with mentioned method. Instead of creating and declared
ClassNotFoundException it throws "java.lang.IllegalStateException: Can't
overwrite cause".

Looking into the code  I found here:
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/8.0.23/org/apache/catalina/loader/WebappClassLoaderBase.java#WebappClassLoaderBase.checkStateForClassLoading%28java.lang.String%29

1309    protected void checkStateForClassLoading(String className) throws
ClassNotFoundException {
1310        // It is not permitted to load new classes once the web application
has
1311        // been stopped.
1312        try {
1313            checkStateForResourceLoading(className);
1314        } catch (IllegalStateException ise) {
1315            ClassNotFoundException cnfe = new ClassNotFoundException();
1316            cnfe.initCause(ise);
1317            throw cnfe;
1318        }
1319    }

I belive the problem is caused by setting initcause on created class when
constructor
new ClassNotFoundException()

has explicty stated:

71     public ClassNotFoundException() {
72         super((Throwable)null);  // Disallow initCause
73     }

Which during initCause is producing mentioned exception:

454     public synchronized Throwable initCause(Throwable cause) {
455         if (this.cause != this)
456             throw new IllegalStateException("Can't overwrite cause with " +
457                                             Objects.toString(cause, "a
null"), this);
458         if (cause == this)
459             throw new IllegalArgumentException("Self-causation not
permitted", this);
460         this.cause = cause;
461         return this;
462     }

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to