On Wed, Sep 25, 2019 at 8:10 PM Gary Gregory <garydgreg...@gmail.com> wrote:
> 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. > Oh, and it would be great if you could provide a unit test to match the fix you suggested (which worked.) Gary > > 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 >> >>