This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

[SOLVED] Eggdrop only connects with debug flag

General support and discussion of Eggdrop bots.
T
TwIZTeD
Voice
Posts: 6
Joined: Tue Nov 27, 2007 1:28 pm

[SOLVED] Eggdrop only connects with debug flag

Post by TwIZTeD »

I have set up my eggdrop fully and successfully run it with ./eggdrop -m -n eggdrop.conf and have a userfile. But when I try to run it with just ./eggdrop I have it say:

Code: Select all

[matt@localhost eggdrop]$ ./eggdrop

Eggdrop v1.6.18 (C) 1997 Robey Pointer (C) 2006 Eggheads
[08:29] --- Loading eggdrop v1.6.18 (Wed Nov 28 2007)
[08:29] Listening at telnet port 3333 (all).
[08:29] Module loaded: dns
[08:29] Module loaded: channels
[08:29] Module loaded: server
[08:29] Module loaded: ctcp
[08:29] Module loaded: irc
[08:29] Module loaded: notes            (with lang support)
[08:29] Module loaded: console          (with lang support)
[08:29] Module loaded: seen
[08:29] Module loaded: blowfish
[08:29] Module loaded: uptime
[08:29] RSS Syndication Script v0.4 (2007-02-08): Loaded.
[08:29] Userinfo TCL v1.07 loaded (URL BF GF IRL EMAIL DOB PHONE ICQ).
[08:29] use '.help userinfo' for commands.
[08:29] Userfile loaded, unpacking...
[08:29] === KnX: 1 channels, 3 users.
Launched into the background  (pid: 21273)

[matt@localhost eggdrop]$
However, it never successfully connects or joins the channel. Also, nothing is recorded in the log file even after waiting over 30 minutes.

What is odd, however, is that when I run it with the debug flag "./eggdrop -n" it connects fine.

Any ideas?
Last edited by TwIZTeD on Wed Nov 28, 2007 1:12 am, edited 1 time in total.
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

This would indicate that you've got some problems with threaded tcl-libraries.
Recently, as several linux-dists have switched to threaded tcllib-packages, there have been an issue where the "gluecode" to make your bot launch into background (with threaded tcl) either isn't implemented, or breaks for some other reason. One fix that has worked for others sofar, is to remove the deb/rpm/etc package, and install a non-threaded tcllibrary manually.

Do you still have the buildtree laying 'round?
NML_375
T
TwIZTeD
Voice
Posts: 6
Joined: Tue Nov 27, 2007 1:28 pm

Post by TwIZTeD »

Not sure what you mean by buildtree... but I downloaded the source for the latest TCL and installed it that way. Didn't use any rpm's or the like. I'm using Fedora 5 btw.
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

Basically, just the files where you compiled your eggdrop (not where you installed it). Mainly interrested in the config.h and config.log files generated by ./configure.

Also, when you compiled tcl (not eggdrop), did you build it with or without thread-support? Did you install it systemwide? Made sure Fedora did'nt sneak anything related to tcl onto your system while you did'nt look?
NML_375
T
TwIZTeD
Voice
Posts: 6
Joined: Tue Nov 27, 2007 1:28 pm

Post by TwIZTeD »

Ok then, yes I still have the buildtree. I didn't specifically tell it to build with thread-support... so I'm going to guess no on that one. I do not believe it was a system wide install as it's located in /home/matt/eggdrop after the make install is run. How would you recommend I check on the TCL?

Pulled this from config.h

Code: Select all

/* Define for Tcl that has threads. */
/* #undef HAVE_TCL_THREADS */
And this from the log

Code: Select all

configure:9648: checking for Tcl library
configure:9660: result: found /usr/local/lib/libtcl8.4.so
configure:9683: checking for Tcl header
configure:9694: result: found /usr/local/include/tcl.h
configure:9730: checking whether the Tcl system has changed
configure:9755: result: yes
configure:9773: checking for Tcl version
configure:9785: result: 8.4
configure:9797: checking for Tcl patch level
configure:9809: result: 8.4.16
configure:9871: checking for Tcl_Free in -ltcl8.4
configure:9901: gcc -pipe -o conftest -g -O2 -Wall   conftest.c -ltcl8.4 -L/usr/local/lib -lm -lpthread -ldl -lnsl  >&5
configure:9907: $? = 0
configure:9911: test -z
                         || test ! -s conftest.err
configure:9914: $? = 0
configure:9917: test -s conftest
configure:9920: $? = 0
configure:9933: result: yes
configure:9966: checking for TclpFinalizeThreadData in -ltcl8.4
configure:9996: gcc -pipe -o conftest -g -O2 -Wall   conftest.c -ltcl8.4 -L/usr/local/lib -lm -lpthread -ldl -lnsl  >&5
/tmp/ccQTRFIB.o: In function `main':
/home/matt/eggdrop1.6.18/conftest.c:95: undefined reference to `TclpFinalizeThreadData'
collect2: ld returned 1 exit status
configure:10002: $? = 1

n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

'k, it seems ./configure did detect a system-wide tcllib installation (at /urs/local/ ) that was not threaded (lacking TclpFinalizeThreadData). This would be coherent with a manual system-installation of tcl.

Could you run this:

Code: Select all

rpm -qa | grep tcl
Also run this one:

Code: Select all

rpm -qf /usr/local/lib/libtcl8.4.so
It'll probably take a couple of minutes or so, but should list any and all rpm-packages containing tcl in it's name. Just to make sure yum or such did'nt sneak tcl in there...
NML_375
T
TwIZTeD
Voice
Posts: 6
Joined: Tue Nov 27, 2007 1:28 pm

Post by TwIZTeD »

Code: Select all

[matt@localhost eggdrop1.6.18]$ rpm -qa | grep tcl
tcl-8.4.12-4
[matt@localhost eggdrop1.6.18]$ rpm -qf /usr/local/lib/libtcl8.4.so
file /usr/local/lib/libtcl8.4.so is not owned by any package
Looks like a package manager did slip something in...
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

Yup, which means you've got two different versions of tcl on your system.
The configure-script found the one you compiled and installed, yet I'm quite confident that the compiler and the runtime loader uses the one from the rpm.

Could you also run this?

Code: Select all

ldd eggdrop
NML_375
T
TwIZTeD
Voice
Posts: 6
Joined: Tue Nov 27, 2007 1:28 pm

Post by TwIZTeD »

Code: Select all

[matt@localhost eggdrop1.6.18]$ ldd eggdrop
        linux-gate.so.1 =>  (0x005e2000)
        libtcl8.4.so => /usr/lib/libtcl8.4.so (0x475c6000)
        libm.so.6 => /lib/libm.so.6 (0x4c96e000)
        libdl.so.2 => /lib/libdl.so.2 (0x4c995000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x4d1a7000)
        libc.so.6 => /lib/libc.so.6 (0x4c839000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x4cd05000)
        /lib/ld-linux.so.2 (0x4c81c000)
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

Confirmed then, your eggdrop is indeed linked to the library-files provided by the rpm, and not the ones you installed yourself. Since FC4, the rpm's hold thread-enabled tcllibraries, requiring special code to put your eggdrop in "background". Since the configure-script found, and used the other set of libraries (the ones you installed yourself), the neccesary code was not included into the eggdrop.

In this case, your two best options are:
1, uninstall the rpm-version of tcl on your system, and recompile your eggdrop.
2, remove the tcl-libraries you manually installed, and recompile your eggdrop.
NML_375
User avatar
rosc2112
Revered One
Posts: 1454
Joined: Sun Feb 19, 2006 8:36 pm
Location: Northeast Pennsylvania

Post by rosc2112 »

I don't understand why people are having probs with threaded versions, unless perhaps its when you do have threaded tcl libs and compiled eggdrop without thread support? I compiled both the libs and eggdrop with threads enabled, works fine.
T
TwIZTeD
Voice
Posts: 6
Joined: Tue Nov 27, 2007 1:28 pm

Post by TwIZTeD »

Problem solved... Thank yall so much for the help... Steps taken:

Ran

Code: Select all

rpm -e tcl-8.4.12-4
Recompiled/installed TCL

Added

Code: Select all

/usr/local/lib
to /etc/ld.so.conf file

Then, as root, ran the ldconfig program (technically had to use /sbin/ldconfig)

Removed the /home/user/eggdrop directory

Then reran, ./configure, make config, make, & make install on the eggdrop
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

@TwIZTeD:
Textbook example! :)


@rosc:
All issues I've encountered has been on recent Fedora, Suse, etc using dist-provided packages for tcl, where they've suddenly decided to make their tcl-libraries threaded. Sofar, pinning this one down has been very difficult, as most users have been content in compiling the library manually and shown no further interrest in providing any information to figure this one out.

Sofar, the only conclusions I've come to is that there is something strange with the builds in Fedora 4-6, Suse, etc; or the user installed multiple libraries, causing a very confused configure-script.

The information gathered in this thread covers and exceeds any and all info I've gathered from users sofar..
NML_375
User avatar
rosc2112
Revered One
Posts: 1454
Joined: Sun Feb 19, 2006 8:36 pm
Location: Northeast Pennsylvania

Post by rosc2112 »

Anyone able to conduct a bit of an experiment, using the fedora package tcl lib with threads enabled, if you enable threads in eggdrop's configure, does that then work?
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

Eggdrop has no speciffic toggle or setting to enable support for threads; the configure-script tries to locate the libtcl.so file, and tests wether it comes with the function "TclpFinalizeThreadData" - which should only be present in threaded libraries.

If the tcllibrary is considdered threaded, the HAVE_TCL_THREADS macro is defined in config.h, which results in some gluecode being included in bg.c (tries to place bot in background by using fork or other tricks), and informative messages added to chanprog.c and main.c...

There is one option to prevent the detection of threaded tcl, --disable-tcl-threads, however this would only be useful when a library is falsely detected as threaded. Using this option with a threaded library will cause your bot to break as described in the beginning of this topic.
NML_375
Post Reply