[ 
https://issues.apache.org/jira/browse/IVYDE-259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13906921#comment-13906921
 ] 

Carsten Pfeiffer commented on IVYDE-259:
----------------------------------------

The change in IvyClasspathContainer (asyncExec -> syncExec) may unfortunately 
lead to deadlock situations. If the main thread attempts to execute a job while 
the resolve job is already running, the main thread waits for the resolve job 
to finish. The latter then attempts to syncExec() into the main thread, which 
won't work.

{code}
Thread [Worker-4] (Suspended)   
        waiting for: RunnableLock  (id=122)     
        Object.wait(long) line: not available [native method]   
        RunnableLock(Object).wait() line: 503   
        Synchronizer.syncExec(Runnable) line: 187       
        Display.syncExec(Runnable) line: 4330   
        IvyClasspathContainerImpl.setClasspathEntries(IClasspathEntry[]) line: 
148      
        IvyClasspathContainerImpl.updateClasspathEntries(IClasspathEntry[]) 
line: 144   
        IvyClasspathResolver.postBatchResolve() line: 40        
        IvyResolveJob.doRun(IProgressMonitor) line: 263 
        IvyResolveJob.run(IProgressMonitor) line: 85    
        Worker.run() line: 54   
{code}

{code}
Thread [main] (Suspended)       
        owns: RunnableLock  (id=122)    
                waited by: Thread [Worker-4] (Suspended)        
        waiting for: Object  (id=123)   
        Object.wait(long) line: not available [native method]   
        Object.wait() line: 503 
        ThreadJob.waitForRun(ThreadJob, IProgressMonitor, InternalJob, Thread) 
line: 272        
        ThreadJob.joinRun(ThreadJob, IProgressMonitor) line: 199        
        ImplicitJobs.begin(ISchedulingRule, IProgressMonitor, boolean) line: 92 
        JobManager.beginRule(ISchedulingRule, IProgressMonitor) line: 286       
        WorkManager.checkIn(ISchedulingRule, IProgressMonitor) line: 118        
        Workspace.prepareOperation(ISchedulingRule, IProgressMonitor) line: 
2282        
        Folder(Resource).refreshLocal(int, IProgressMonitor) line: 1655 
        ExternalFoldersManager.createLinkFolder(IPath, boolean, IProject, 
IProgressMonitor) line: 155   
        ExternalFoldersManager.createLinkFolder(IPath, boolean, 
IProgressMonitor) line: 145     
        ExternalFolderChange.updateExternalFoldersIfNecessary(boolean, 
IProgressMonitor) line: 48       
        
SetContainerOperation(ChangeClasspathOperation).classpathChanged(ClasspathChange,
 boolean) line: 62     
        SetContainerOperation.executeOperation() line: 110      
        SetContainerOperation(JavaModelOperation).run(IProgressMonitor) line: 
728       
        Workspace.run(IWorkspaceRunnable, ISchedulingRule, int, 
IProgressMonitor) line: 2344    
        
SetContainerOperation(JavaModelOperation).runOperation(IProgressMonitor) line: 
793      
        JavaCore.setClasspathContainer(IPath, IJavaProject[], 
IClasspathContainer[], IProgressMonitor) line: 4952       
        IvyClasspathContainerImpl.notifyUpdateClasspathEntries() line: 172      
        IvyClasspathContainerImpl$1.run() line: 162     
        RunnableLock.run() line: 35     
        Synchronizer.runAsyncMessages(boolean) line: 135        
        Display.runAsyncMessages(boolean) line: 3563    
        Display.readAndDispatch() line: 3212    
...
{code}

> duplicate setup's added to setuplist in prefs file
> --------------------------------------------------
>
>                 Key: IVYDE-259
>                 URL: https://issues.apache.org/jira/browse/IVYDE-259
>             Project: IvyDE
>          Issue Type: Bug
>         Environment: ivyde hudson build
>            Reporter: Stephen Haberman
>            Assignee: Nicolas Lalevée
>            Priority: Minor
>             Fix For: 2.2.0.beta1
>
>
> I'm using the latest hudson build and the new 
> .settings/org.apache.ivyde.eclipse.prefs file is churning a lot. In the 
> latest diff, the setting org.apache.ivyde.eclipse.standlaoneretrieve had 
> changed from:
> <?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>
> <setuplist>
>       <setup name\="dependencies">
>               <ivysettings loadondemand\="false" 
> path\="${workspace_loc\:project/ivysettings.xml}"/>
>               <ivyxml path\="ivy.xml"/>
>               <retrieve confs\="*" 
> pattern\="bin/lib/[conf]/[type]s/[artifact].[ext]" sync\="true" 
> types\="jar,source"/>
>       </setup>
>         (this <setup/> was repeated 5 times)
> To the same thing but with <setup/> repeated 6 times.
> It seems to be adding new setups but not taking out the old ones. I'm not 
> really sure what is triggering the new (duplicate) <setup/> to be added. I 
> just notice after using Eclipse for awhile that the files have changed.
> Also, the setting name "standlaoneretrieve" has a typo, "laone" should be 
> "alone".
> Apologies if I shouldn't be using the hudson build or reporting bugs for it 
> here.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to