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.

eggdrop segfaults when connecting to ssl server on AMD64

General support and discussion of Eggdrop bots.
Post Reply
p
paef
Voice
Posts: 3
Joined: Sat Sep 27, 2008 9:23 pm

eggdrop segfaults when connecting to ssl server on AMD64

Post by paef »

Hello. just installed eggdrop1.6.19 on a computer with an amd64 processor and debian 64bit (lenny) installed on it. The egg is patched with the ssl path for 1.6.19.

On build i got a few warnings but it compiled.

When trying to start it just hangs. when doing running it with -n flag i get:

Code: Select all

STARTING BOT IN USERFILE CREATION MODE.
Telnet to the bot and enter 'NEW' as your nickname.
OR go to IRC and type:  /msg Pierre hello
This will make the bot recognize you as the master.

[05:33] === velo: 0 channels, 0 users.
[05:33] main: entering loop
[05:33] Trying server my.ssl.server.com:27015
[05:33] DNS resolved my.ssl.server.com to xx.xxx.xx.xx
[05:33] net_switch_to_ssl()
And there it halts.

If i do a strace on the whole thing i get this output:

Code: Select all

write(1, "[05:35] main: entering loop\n"..., 28[05:35] main: entering loop
) = 28
write(4, "\0"..., 1)                    = 1
futex(0x1cafe30, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1d00790, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1d00794, FUTEX_WAIT_PRIVATE, 1, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x1cafe30, FUTEX_WAKE_PRIVATE, 1) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
write(1, "[05:35] Trying server my.ssl.server.com"..., 41[05:35] Trying server my.ssl.server.com:7000
) = 41
stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
sendto(6, "\267\35\1\0\0\1\0\0\0\0\0\0\3irc\5ldftw\2nu\0\0\1\0\1"..., 30, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}, 16) = 30
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=1024}) = 0
select(1024, [5 6], NULL, NULL, {1, 0}) = 1 (in [6], left {0, 792000})
recvfrom(6, "\267\35\201\200\0\1\0\1\0\5\0\5\3irc\5ldftw\2nu\0\0\1\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}, [16]) = 225
futex(0x7fc9c6329000, FUTEX_WAKE_PRIVATE, 2147483647) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
write(1, "[05:35] DNS resolved my.ssl.server.com"..., 50[05:35] DNS resolved my.ssl.server.com to xx.xx.xx.xx
) = 50
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 9
setsockopt(9, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
setsockopt(9, SOL_SOCKET, SO_LINGER, [0], 4) = -1 EINVAL (Invalid argument)
fcntl(9, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
bind(9, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
connect(9, {sa_family=AF_INET, sin_port=htons(27015), sin_addr=inet_addr("xx.xx.xx.xx")}, 16) = -1 EINPROGRESS (Operation now in progress)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1892, ...}) = 0
write(1, "[05:35] net_switch_to_ssl()\n"..., 28[05:35] net_switch_to_ssl()
) = 28
brk(0x1d84000)                          = 0x1d84000
write(9, "\200t\1\3\1\0K\0\0\0 \0\0009\0\0008\0\0005\0\0\26\0\0\23\0\0\n\7\0\300\0"..., 118) = -1 EAGAIN (Resource temporarily unavailable)
nanosleep({0, 1000000}, NULL)           = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
And after that strace exits...

Works fine without the ssl patch. But realy need to be able to connect to ssl secured servers. Think that it is the debian x64 platform vs the ssl patch that don't work that well together but haven't been able to confirm anything.

Been trying everything i can think off, even tried the debian package for eggdrop, but no built in ssl support there from what i could see.
So wondering if anyone got any ideas.. any at all.
d
dbali
Voice
Posts: 3
Joined: Wed Dec 24, 2008 8:00 pm

Post by dbali »

Hi
I have same problem. I try some other openssl and eggdrop versions, but the problem don't leave.
Can anybody help?
n
nml375
Revered One
Posts: 2860
Joined: Fri Aug 04, 2006 2:09 pm

Post by nml375 »

Could you double-check that the ssl-libraries are linked as 64bit libraries?
Smells like a mixed 32/64bit build.
NML_375
d
dbali
Voice
Posts: 3
Joined: Wed Dec 24, 2008 8:00 pm

Post by dbali »

no, it's only 64bit build. I try with the original, apt-installed version openssl, and few own compiled versions (to my home dir), but doesn't work. On 3 debian lenny AMD64 servers have i this error...

started with strace:

Code: Select all

....
write(1, "[22:07] DNS resolved irc.*.*"..., 51[22:07] DNS resolved irc.*.* to *.*.*.*
) = 51
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 8
setsockopt(8, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
setsockopt(8, SOL_SOCKET, SO_LINGER, [0], 4) = -1 EINVAL (Invalid argument)
fcntl(8, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
bind(8, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
connect(8, {sa_family=AF_INET, sin_port=htons(6697), sin_addr=inet_addr("*.*.*.*")}, 16) = -1 EINPROGRESS (Operation now in progress)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2407, ...}) = 0
write(1, "[22:07] net_switch_to_ssl()\n"..., 28[22:07] net_switch_to_ssl()
) = 28
brk(0x191b000)                          = 0x191b000
write(8, "\200t\1\3\1\0K\0\0\0 \0\0009\0\0008\0\0005\0\0\26\0\0\23\0\0\n\7\0\300\0"..., 118) = -1 EAGAIN (Resource temporarily unavailable)
nanosleep({0, 1000000}, NULL)           = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
futex(0x7fec531589e0, FUTEX_WAIT_PRIVATE, 2, NULL
and don't make anything else..
With irssi, this servers working with ssl, but eggdrop don't. When 1 delete from the eggdrop.conf the "set use-ssl 1" it's work fine, but i must connect with ssl..

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

Post by nml375 »

None at the moment, I'm afraid :/

One workaround might be to use 6tunnel?
NML_375
d
dustoff
Voice
Posts: 1
Joined: Fri Jan 16, 2009 5:34 am

Post by dustoff »

I'm having the exact same problem. Debian lenny/testing amd-64, and I'm going to attach a list of ssl libs installed on this host.

package version
libssl-dev 0.9.8g-15
libssl0.9.7 0.9.7k-3.1etch2
libssl0.9.8 0.9.8g-15
openssl 0.9.8g-15
d
dupondje
Voice
Posts: 1
Joined: Sat Jan 17, 2009 7:48 am

Post by dupondje »

Tryout the new patch on egghelp :) It should solve ssl problems on 64bit systems!
d
dbali
Voice
Posts: 3
Joined: Wed Dec 24, 2008 8:00 pm

Post by dbali »

thx, it's works :)
p
pzYsTorM
Voice
Posts: 3
Joined: Thu Sep 17, 2009 9:08 am

Post by pzYsTorM »

The problem seems not fixed yet.

Eggdrop 1.6.19 with ctcpfix and ssl patch.

Code: Select all

$ strace ./eggdrop -nt
...
fstat(9, {st_mode=S_IFREG|0644, st_size=7630, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4fd8139000
read(9, "%{help=help}%{-}\nDCC commands for"..., 4096) = 4096
read(9, "s a language from the language li"..., 4096) = 3534
read(9, ""..., 4096)                    = 0
close(9)                                = 0
munmap(0x7f4fd8139000, 4096)            = 0
stat("help/set/core.help", 0x7fffe02f5ee0) = -1 ENOENT (No such file or directory)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
write(4, "\0"..., 1)                    = 1
futex(0x67dc30, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0xf4c510, FUTEX_WAKE_PRIVATE, 1)  = 1
futex(0xf4c514, FUTEX_WAIT_PRIVATE, 1, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x67dc30, FUTEX_WAKE_PRIVATE, 1)  = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
write(1, "[14:33] Trying server xx.xx.xx."..., 41[14:33] Trying server xx.xx.xx.xx:6670
) = 41
futex(0x7f4fd6f6a000, FUTEX_WAKE_PRIVATE, 2147483647) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 9
setsockopt(9, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
setsockopt(9, SOL_SOCKET, SO_LINGER, [0], 4) = -1 EINVAL (Invalid argument)
fcntl(9, F_SETFL, O_RDONLY|O_NONBLOCK)  = 0
bind(9, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("yy.yy.yy.yy")}, 16) = 0
connect(9, {sa_family=AF_INET, sin_port=htons(6670), sin_addr=inet_addr("xx.xx.xx.xx")}, 16) = -1 EINPROGRESS (Operation now in progress)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2309, ...}) = 0
write(9, "\200t\1\3\1\0K\0\0\0 \0\0009\0\0008\0\0005\0\0\26\0\0\23\0\0\n\7\0\300\0"..., 118) = -1 EAGAIN (Resource temporarily unavailable)
nanosleep({0, 1000000}, NULL)           = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
futex(0x7f4fd6f679e0, FUTEX_WAIT_PRIVATE, 2, NULL
Any ideas?

Tcl8.4... Tcl8.5... there is no difference.
p
pzYsTorM
Voice
Posts: 3
Joined: Thu Sep 17, 2009 9:08 am

Post by pzYsTorM »

Still getting this bug :(

Ive compiled a brand new eggdrop without any patches from the website. The error is the same.

Code: Select all

(gdb) thread apply all bt

Thread 1 (Thread 0x7fb1e5a626e0 (LWP 24116)):
#0  0x00007fb1e4932d29 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#1  0x00007fb1e561712b in Tcl_ConditionWait () from /usr/lib/libtcl8.5.so.0
#2  0x00007fb1e5617fbf in Tcl_WaitForEvent () from /usr/lib/libtcl8.5.so.0
#3  0x00007fb1e55e2c4e in Tcl_DoOneEvent () from /usr/lib/libtcl8.5.so.0
#4  0x00000000004275b2 in ?? ()
#5  0x00007fb1e4b621a6 in __libc_start_main () from /lib/libc.so.6
#6  0x00000000004032d9 in ?? ()
#7  0x00007fffeda6f378 in ?? ()
#8  0x000000000000001c in ?? ()
#9  0x0000000000000001 in ?? ()
#10 0x00007fffeda6faba in ?? ()
#11 0x0000000000000000 in ?? ()
#0  0x00007fb1e4932d29 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0

Code: Select all

$ strace -p 24116
Process 24116 attached - interrupt to quit
futex(0x6c29b4, FUTEX_WAIT_PRIVATE, 1, NULL^C <unfinished ...>
Process 24116 detached
p
pzYsTorM
Voice
Posts: 3
Joined: Thu Sep 17, 2009 9:08 am

Post by pzYsTorM »

Arrrrr....


just patch the eggdrop with
http://www.egghelp.org/files/patches/eg ... x.patch.gz

and everything is good.
Post Reply