On Wed, Sep 25, 2019 at 6:36 PM Mark Roberts <mar...@cs.washington.edu> wrote:
> 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. > Ok, I have a fix in and will start an RC ASAP to get this regression fix out. Gary > > 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 > >