[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [swarm-hackers] swarm 2.3.0 release

From: Paul Johnson
Subject: Re: [swarm-hackers] swarm 2.3.0 release
Date: Wed, 08 Apr 2009 00:35:00 -0500
User-agent: Thunderbird (X11/20090318)

Scott Christley wrote:
On Apr 7, 2009, at 6:28 PM, Paul Johnson wrote:

Is tcl8.5 known to not work? that might explain everything.

That's a promising lead. I used 8.4 on my debian system, I never tried 8.5. First thing I would do is try configuring with 8.4 and see how it goes. I will see if 8.5 is available on debian and I can take a look from that end.


I'm horribly sorry to everybody that I sent the last message (with config.log) to the list, rather than directly to Scott.

I've had success building Swarm-2.3.0 on Centos-5.3 (free version of RedHat). Programs run, yeah!

But now I'm bothering the whole list because somebody might have Swarm on Ubuntu 8.10.

I'm having a problem that some users described in the Summer, but I could not reproduce it. Now I'm pretty sure I see what's going wrong. On Ubuntu 8.10, there are 2 versions of tcl/tk installed-- tcl8.5, tcl8.4, tk8.5, tk8.4--but only one blt that builds on top of both. As you see in this configure statement, I've put in lots and lots of effort to only use tcl/tk8.4:

./configure --build=i486-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=${prefix}/lib/swarm --disable-maintainer-mode --disable-dependency-tracking --srcdir=. --enable-onelib --with-gnu-ld --with-tcl=/usr/lib/tcl8.4 --with-tclinclude=/usr/include/tcl8.4 --with-tkinclude=/usr/include/tcl8.4 --with-tk=/usr/lib/tk8.4 --with-tclscriptdir=/usr/share/tcltk/tcl8.4 --with-tkscriptdir=/usr/share/tcltk/tk8.4 --with-jdkdir=/usr/lib/jvm/java-6-openjdk

But that still leads to death:

$ ./heatbugs
error: TkExtra (instance)
version conflict for package "Tcl": have 8.4, need 8.5.3
   while executing
"package present Tcl    8.5.3"

Note how my installed Swarm picks up both tcl 8.4 and 8.5 libraries:

$ ldd ./heatbugs
       linux-gate.so.1 =>  (0xb7f91000)
       libswarm.so.0 => /usr/lib/libswarm.so.0 (0xb7d43000)
       libBLT.2.4.so.8.5 => /usr/lib/libBLT.2.4.so.8.5 (0xb7c50000)
       libtk8.4.so.0 => /usr/lib/libtk8.4.so.0 (0xb7b69000)
       libtcl8.4.so.0 => /usr/lib/libtcl8.4.so.0 (0xb7aaf000)
       libXpm.so.4 => /usr/lib/libXpm.so.4 (0xb7a9f000)
       libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb7a79000)
       libhdf5-1.6.6.so.0 => /usr/lib/libhdf5-1.6.6.so.0 (0xb7947000)
       libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7912000)
       libz.so.1 => /usr/lib/libz.so.1 (0xb78fb000)
       libX11.so.6 => /usr/lib/libX11.so.6 (0xb780c000)
       libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb77e6000)
       libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb77e2000)
       libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7684000)
       libtk8.5.so.0 => /usr/lib/libtk8.5.so.0 (0xb7568000)
       libtcl8.5.so.0 => /usr/lib/libtcl8.5.so.0 (0xb7468000)
       libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb744f000)
       /lib/ld-linux.so.2 (0xb7f77000)
       libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb744c000)
       libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb7433000)
       libXss.so.1 => /usr/lib/libXss.so.1 (0xb742e000)
       libXext.so.6 => /usr/lib/libXext.so.6 (0xb741f000)
       libXft.so.2 => /usr/lib/libXft.so.2 (0xb740b000)
       libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7395000)
       libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7368000)
       libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb735e000)
       libXau.so.6 => /usr/lib/libXau.so.6 (0xb735a000)
       libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7355000)
       libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb732e000)

After a lot of messing about, I'm pretty sure the tcl/tk8.5 stuff is drawn in by blt.

Note the installed blt-dev and blt provide libraries for both versions of tcltk in the same directory. I'm going to get their blt source package and see how/why they do this:

$ dpkg -L blt-dev

$ dpkg -L blt

I cannot remove tk8.5 and tcl8.5 because the whole R stats system requires it.

I can try to clamp down on BLT in the swarm configure statement?  How about:


I note that the BLT install has a created symbolic links,

/usr/lib/libBLT.so -> libBLT.2.4.so.8.5

I bet that is at the heart of the problem! because Swarms -lBLT is pointed to the blt linked with tcltk 8.5.

What if I re-do the symbolic link?

ln -sf /usr/lib/libBLT.2.4.so.8.4 /usr/lib/libBLT.so

Does the static library play a role? I can do this to be sure

/usr/lib/libBLT.a -> libBLT.


I get a clean build of Swarm and note that heatbugs is re-built and it does not include any "wrong" tcltk versions.

$ ldd ./heatbugs
       linux-gate.so.1 =>  (0xb7fff000)
       libswarm.so.0 => /usr/lib/libswarm.so.0 (0xb7dbc000)
       libBLT.2.4.so.8.4 => /usr/lib/libBLT.2.4.so.8.4 (0xb7cc9000)
       libtk8.4.so.0 => /usr/lib/libtk8.4.so.0 (0xb7be2000)
       libtcl8.4.so.0 => /usr/lib/libtcl8.4.so.0 (0xb7b28000)
       libXpm.so.4 => /usr/lib/libXpm.so.4 (0xb7b18000)
       libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb7af2000)
       libhdf5-1.6.6.so.0 => /usr/lib/libhdf5-1.6.6.so.0 (0xb79c0000)
       libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb798b000)
       libz.so.1 => /usr/lib/libz.so.1 (0xb7974000)
       libX11.so.6 => /usr/lib/libX11.so.6 (0xb7885000)
       libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb785f000)
       libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb785b000)
       libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb76fd000)
       libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb76e3000)
       /lib/ld-linux.so.2 (0xb7fe5000)
       libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb76e0000)
       libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb76c7000)
       libXau.so.6 => /usr/lib/libXau.so.6 (0xb76c4000)
       libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb76bf000)

But still death:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb762f8c0 (LWP 6018)]
0x00000000 in ?? ()
(gdb) bt
#0  0x00000000 in ?? ()
#1  0xb7ca7385 in ?? () from /usr/lib/libBLT.2.4.so.8.4
#2  0xb7ca75a0 in ?? () from /usr/lib/libBLT.2.4.so.8.4
#3  0xb7aba5ce in TclInvokeStringCommand () from /usr/lib/libtcl8.4.so.0
#4  0xb7b0f5a9 in ?? () from /usr/lib/libtcl8.4.so.0
#5  0xb7abb94e in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so.0
#6  0xb7ae7d71 in ?? () from /usr/lib/libtcl8.4.so.0
#7  0xb7ae5db8 in TclCompEvalObj () from /usr/lib/libtcl8.4.so.0
#8  0xb7abcc24 in Tcl_EvalObjEx () from /usr/lib/libtcl8.4.so.0
#9  0xb7ac403f in Tcl_ForeachObjCmd () from /usr/lib/libtcl8.4.so.0
#10 0xb7abb94e in TclEvalObjvInternal () from /usr/lib/libtcl8.4.so.0
#11 0xb7abc812 in Tcl_EvalEx () from /usr/lib/libtcl8.4.so.0
#12 0xb7abca7c in Tcl_Eval () from /usr/lib/libtcl8.4.so.0
#13 0xb7e231c0 in -[TclInterp eval:] (self=0x9247650, _cmd=0xb7f03df0,
   fmt=0xb7ea00c0 "foreach w [winfo children .] {busy hold $w} ;update")
   at TclInterp.m:352
#14 0xb7e1dd25 in tkobjc_updateIdleTasks (hold=1) at common.m:274
#15 0xb7dd45ee in -[ProbeDisplay createEnd] (self=0x938b140, _cmd=0xb7ec66c8)
   at ProbeDisplay.m:106
#16 0xb7dd5428 in -[ProbeDisplayManager _createProbeDisplayFor::setWindowGeometryRecordName:] (self=0x929de90, _cmd=0xb7ec6708, anObject=0x9314ec0,
   windowGeometryRecordName=0x938b0f0 "ProbeDisplay-heatbugModelSwarm")
   at ProbeDisplayManager.m:160
#17 0xb7dd4eff in -[ProbeDisplayManager createArchivedProbeDisplayFor:variableName:] (self=0x929de90, _cmd=0xb7ec7990, anObject=0x9314ec0,
   variableName=0x804bafd "heatbugModelSwarm") at ProbeDisplayManager.m:173
#18 0xb7dd71fc in createArchivedProbeDisplayNamed (obj=0x9314ec0,
   name=0x804bafd "heatbugModelSwarm") at simtoolsgui.m:81
#19 0x0804ab7b in -[HeatbugObserverSwarm buildObjects] (self=0x92bdb48,
   _cmd=0x804da08) at HeatbugObserverSwarm.m:91
#20 0x08049bad in main (argc=153670504, argv=0x0) at main.m:41

I've tried quite a few variants of this tonight and I'm going to sleep. Sometimes the answer comes to me in my dreams. I stand in front of a burning workstation on top of a hillside and the burning workstation talks to me.

Right now I'm thinking of just removing Ubuntu's blt that tries to do both versions of tcl/tk and building one just for tcl/tk8.4.

If you have a suggestion that does not involve 1) becoming a Windows user or 2) "get a Mac!" I'll be glad to hear from you.


Paul E. Johnson email: address@hidden
Professor, Political Science http://pj.freefaculty.org
1541 Lilac Lane, Rm 504
University of Kansas Office: (785) 864-9086
Lawrence, Kansas 66044-3177 FAX: (785) 864-5700

reply via email to

[Prev in Thread] Current Thread [Next in Thread]