You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "John Casey (JIRA)" <ji...@codehaus.org> on 2008/02/05 18:01:28 UTC

[jira] Updated: (MNG-3221) Infinite loop in DefaultLifecycleExecutor

     [ http://jira.codehaus.org/browse/MNG-3221?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

John Casey updated MNG-3221:
----------------------------


This patch looks like it will prevent any @execute phase="xxx" from running, since the check is a truism...targetPhase is set to mojoDescriptor.getExecutePhase(), then later, the forked execution won't run if ( mojoDescriptor.getExecutionPhase().equals( targetPhase) )...in other words, nothing modifies targetPhase, and the only way the forked phase will run is if targetPhase is modified...

Can you provide some tests that display this problem broken, then fixed with the patch?

> Infinite loop in DefaultLifecycleExecutor
> -----------------------------------------
>
>                 Key: MNG-3221
>                 URL: http://jira.codehaus.org/browse/MNG-3221
>             Project: Maven 2
>          Issue Type: Bug
>          Components: Plugins and Lifecycle
>    Affects Versions: 2.0.7
>            Reporter: Vincent Siveton
>             Fix For: 2.0.9
>
>         Attachments: infinite-loop.diff
>
>
> Defining this following report:
> {code:title=MyReport.java|borderStyle=solid}
> /**
>  * @goal mygoal
>  * @execute phase="site"
>  */
> public class MyReport
>     extends AbstractMavenReport{}
> {code} 
> I got this following loop:
> {noformat}
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 530	
> 	DefaultLifecycleExecutor.executeGoalWithLifecycle(String, Stack, MavenSession, Map, MavenProject, Lifecycle) line: 480	
> 	DefaultLifecycleExecutor.forkProjectLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 896	
> 	DefaultLifecycleExecutor.forkLifecycle(MojoDescriptor, Stack, MavenSession, MavenProject) line: 739	
> 	DefaultLifecycleExecutor.executeGoals(List, Stack, MavenSession, MavenProject) line: 510	
> 	DefaultLifecycleExecutor.executeStandaloneGoal(String, Stack, MavenSession, MavenProject) line: 493	
> 	DefaultLifecycleExecutor.executeGoal(String, MavenSession, MavenProject) line: 463	
> 	DefaultLifecycleExecutor.executeGoalAndHandleFailures(String, MavenSession, MavenProject, EventDispatcher, String, ReactorManager, long, String) line: 311	
> 	DefaultLifecycleExecutor.executeTaskSegments(List, ReactorManager, MavenSession, MavenProject, EventDispatcher) line: 278	
> 	DefaultLifecycleExecutor.execute(MavenSession, ReactorManager, EventDispatcher) line: 143	
> 	DefaultMaven.doExecute(MavenExecutionRequest, EventDispatcher) line: 333	
> 	DefaultMaven.execute(MavenExecutionRequest) line: 126	
> 	MavenCli.main(String[], ClassWorld) line: 280	
> 	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	
> 	NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39	
> 	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25	
> 	Method.invoke(Object, Object[]) line: 324	
> 	Launcher.launchEnhanced(String[]) line: 315	
> 	Launcher.launch(String[]) line: 255	
> 	Launcher.mainWithExitCode(String[]) line: 430	
> 	Launcher.main(String[]) line: 375	
> {noformat}
> I put a small patch to break this, but I am not confident of potential side effects. Thanks to review it.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira