Looks like a cut and paste error.  I think the two inner stack.pop() should be 
deleted.  I'm not able to test right now.

Mark

-----Original Message-----
From: Gary Gregory [mailto:garydgreg...@gmail.com] 
Sent: Wednesday, September 25, 2019 2:55 PM
To: Commons Developers List <dev@commons.apache.org>
Subject: [bcel] java.util.EmptyStackException at 
org.apache.bcel.classfile.DescendingVisitor.visitModule 
(DescendingVisitor.java:592)

Hi All & Mark Roberts,

It looks like I/we did not test BCEL 6.4.0 well enough or broadly enough.

If I take git master for Apache Commons Pool and update the site report from 
6.3.1 to 6.4.0:

diff --git a/pom.xml b/pom.xml
index c60f6a7..5207358 100644
--- a/pom.xml
+++ b/pom.xml
@@ -213,7 +213,7 @@
               <dependency>
                 <groupId>org.apache.bcel</groupId>
                 <artifactId>bcel</artifactId>
-                <version>6.3.1</version>
+                <version>6.4.0</version>
               </dependency>
             </dependencies>
           </plugin>

I get:

[INFO]
------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] Total time:  06:11 min
[INFO] Finished at: 2019-09-25T16:19:15-04:00 [INFO]
------------------------------------------------------------------------
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-site-plugin:3.7.1:site (default-site) on project 
commons-pool2: Execution default-site of goal 
org.apache.maven.plugins:maven-site-plugin:3.7.1:site failed.:
EmptyStackException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal 
org.apache.maven.plugins:maven-site-plugin:3.7.1:site (default-site) on project 
commons-pool2: Execution default-site of goal 
org.apache.maven.plugins:maven-site-plugin:3.7.1:site failed.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:148)
    at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:117)
    at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:81)
    at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch
(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main
(Launcher.java:347)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution 
default-site of goal org.apache.maven.plugins:maven-site-plugin:3.7.1:site
failed.
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
(DefaultBuildPluginManager.java:148)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:148)
    at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:117)
    at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:81)
    at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch
(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main
(Launcher.java:347)
Caused by: java.util.EmptyStackException
    at java.util.Stack.peek (Stack.java:102)
    at java.util.Stack.pop (Stack.java:84)
    at org.apache.bcel.classfile.DescendingVisitor.visitModule
(DescendingVisitor.java:592)
    at org.apache.bcel.classfile.Module.accept (Module.java:102)
    at org.apache.bcel.classfile.DescendingVisitor.visitJavaClass
(DescendingVisitor.java:102)
    at org.apache.bcel.classfile.JavaClass.accept (JavaClass.java:213)
    at org.apache.maven.shared.jar.classes.JarClassesAnalysis.analyze
(JarClassesAnalysis.java:132)
    at
org.apache.maven.report.projectinfo.dependencies.Dependencies.getJarDependencyDetails
(Dependencies.java:258)
    at
org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer.hasSealed
(DependenciesRenderer.java:1142)
    at
org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer.renderSectionDependencyFileDetails
(DependenciesRenderer.java:531)
    at
org.apache.maven.report.projectinfo.dependencies.renderer.DependenciesRenderer.renderBody
(DependenciesRenderer.java:230)
    at org.apache.maven.reporting.AbstractMavenReportRenderer.render
(AbstractMavenReportRenderer.java:80)
    at org.apache.maven.report.projectinfo.DependenciesReport.executeReport
(DependenciesReport.java:162)
    at org.apache.maven.reporting.AbstractMavenReport.generate
(AbstractMavenReport.java:251)
    at
org.apache.maven.plugins.site.render.ReportDocumentRenderer.renderDocument
(ReportDocumentRenderer.java:230)
    at org.apache.maven.doxia.siterenderer.DefaultSiteRenderer.render
(DefaultSiteRenderer.java:349)
    at org.apache.maven.plugins.site.render.SiteMojo.renderLocale
(SiteMojo.java:198)
    at org.apache.maven.plugins.site.render.SiteMojo.execute
(SiteMojo.java:147)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo
(DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute
(MojoExecutor.java:148)
    at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:117)
    at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject
(LifecycleModuleBuilder.java:81)
    at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
(SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute
(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
(Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch
(Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
(Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main
(Launcher.java:347)
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please 
read the following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

We are clearly missing some unit tests :-(

Looking at org.apache.bcel.classfile.DescendingVisitor.visitModule
(DescendingVisitor.java:592), the problem seems like push/pop are
unbalanced:

    /** @since 6.4.0 */
    @Override
    public void visitModule(final Module obj) {
        stack.push(obj);
        obj.accept(visitor);
        final ModuleRequires[] rtable = obj.getRequiresTable();
        for (final ModuleRequires element : rtable) {
            element.accept(this);
        }
        final ModuleExports[] etable = obj.getExportsTable();
        for (final ModuleExports element : etable) {
            element.accept(this);
        }
        stack.pop();
        final ModuleOpens[] otable = obj.getOpensTable();
        for (final ModuleOpens element : otable) {
            element.accept(this);
        }
        stack.pop();
        final ModuleProvides[] ptable = obj.getProvidesTable();
        for (final ModuleProvides element : ptable) {
            element.accept(this);
        }
        stack.pop();
    }

Mark?

Gary


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

Reply via email to