Bug 68818

Summary: Accidentally cross linked libraries cause endless looping and eventually crash.
Product: [Applications] kdevelop Reporter: nick smethurst <nick.smethurst>
Component: Build tools: AutomakeAssignee: KDevelop Developers <kdevelop-devel>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description nick smethurst 2003-11-23 01:34:17 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources
Compiler:          gcc 3.3.1 
OS:          Linux

In auto project, if a project contains two libtool libraries and they are mistakenly crosslinked, KDevelop enters into an endless loop when the user types F7 to compile, and eventually crashes:

A bit of the resulting kdebug output (full directory paths not shown):

kdevelop (auto project):

Scheduling : < .. /src/libkvvtk/>  target <libkvvtk.la>
Looking for path src/libkvvtk
 ... checking -/ .. -
 ... (tailored: -- against -src/libkvvtk- )
 ... checking -/ .. /doc-
 ... (tailored: -doc- against -src/libkvvtk- )
 ... checking -/ .. /doc/en-
 ... (tailored: -doc/en- against -src/libkvvtk- )
 ... checking -/ .. /po-
 ... (tailored: -po- against -src/libkvvtk- )
 ... checking -/ .. /src-
 ... (tailored: -src- against -src/libkvvtk- )
 ... checking -/ .. /src/libkvisualiser-
 ... (tailored: -src/libkvisualiser- against -src/libkvvtk- )
 ... checking -/ .. /src/libkvvtk-
 ... (tailored: -src/libkvvtk- against -src/libkvvtk- )
Found it!
Found config optimized
Found config debug
Scheduling : < .. /src/libkvisualiser/>  target <libkvisualiser.la>
Looking for path src/libkvisualiser
 ... checking -/ .. -
 ... (tailored: -- against -src/libkvisualiser- )
 ... checking -/ .. /doc-
 ... (tailored: -doc- against -src/libkvisualiser- )
 ... checking -/ .. /doc/en-
 ... (tailored: -doc/en- against -src/libkvisualiser- )
 ... checking -/ .. /po-
 ... (tailored: -po- against -src/libkvisualiser- )
 ... checking -/ .. /src-
 ... (tailored: -src- against -src/libkvisualiser- )
 ... checking -/ .. /src/libkvisualiser-
 ... (tailored: -src/libkvisualiser- against -src/libkvisualiser- )
Found it!
Found config optimized
Found config debug
Scheduling : < .. /src/libkvvtk/>  target <libkvvtk.la>
Looking for path src/libkvvtk
 ... checking -/ .. -
 ... (tailored: -- against -src/libkvvtk- )
 ... checking -/ .. /doc-
 ... (tailored: -doc- against -src/libkvvtk- )
 ... checking -/ .. /doc/en-
 ... (tailored: -doc/en- against -src/libkvvtk- )
 ... checking -/ .. /po-
 ... (tailored: -po- against -src/libkvvtk- )
 ... checking -/ .. /src-
 ... (tailored: -src- against -src/libkvvtk- )
 ... checking -/ .. /src/libkvisualiser-
 ... (tailored: -src/libkvisualiser- against -src/libkvvtk- )
 ... checking -/ .. /src/libkvvtk-
 ... (tailored: -src/libkvvtk- against -src/libkvvtk- )
Found it!
Found config optimized

and so on ..

Maybe there should be some kind of check for this user error which prevents the crash?
Comment 1 Amilcar do Carmo Lucas 2003-11-23 14:08:38 UTC
OK, I'll take a look at it
Comment 2 Amilcar do Carmo Lucas 2003-11-23 14:27:12 UTC
The problem is in the recursive function:
void AutoProjectPart::queueInternalLibDependenciesBuild(TargetItem* titem)
that starts around line buildtools/autotools/autoprojectpart.cpp:665 

The fix seams to be non trivial due to the async nature of the function.
Besides that we need to issue an error to the user, and we are currently in a string freeze, so I'll postpone this one for after the release.

Thanks for reporting.
Comment 3 Amilcar do Carmo Lucas 2004-01-21 15:10:37 UTC
Reopen, because the REMIND state "hides" the bug
Comment 4 Andreas Pakulat 2007-11-30 17:40:46 UTC
SVN commit 743327 by apaku:

Check for circular dependecies and tell the user if one is found.
BUG:68818

 M  +62 -37    autoprojectpart.cpp  
 M  +1 -1      autoprojectpart.h  


WebSVN link: http://websvn.kde.org/?view=rev&revision=743327