1.1.4: unaligned access following silc_server_purge_expired_clients:1260: Expire timeout

Stuart Henderson stu at spacehopper.org
Fri Apr 18 00:53:00 CEST 2008


My server running 1.1.4 (openbsd/sparc64) just died like this:

23:31:28 silc_server_command_send_status_reply:491: Sending command status 0
23:31:28 silc_server_packet_send:47: Sending COMMAND REPLY packet
23:31:28 silc_server_command_free:307: Command context 0x48c54f40 refcnt 1->0
23:31:29 silc_server_packet_parse_type:299: Received COMMAND packet [flags 0]
23:31:29 silc_server_command_process_timeout:179: Calling PING command
23:31:29 silc_server_command_send_status_reply:491: Sending command status 0
23:31:29 silc_server_packet_send:47: Sending COMMAND REPLY packet
23:31:29 silc_server_command_free:307: Command context 0x4e4a0f80 refcnt 1->0
23:31:30 silc_server_packet_parse_type:299: Received COMMAND packet [flags 0]
23:31:30 silc_server_command_process_timeout:179: Calling PING command
23:31:30 silc_server_command_send_status_reply:491: Sending command status 0
23:31:30 silc_server_packet_send:47: Sending COMMAND REPLY packet
23:31:30 silc_server_command_free:307: Command context 0x4e4a0f80 refcnt 1->0
23:31:35 silc_server_packet_parse_type:299: Received COMMAND packet [flags 0]
23:31:36 silc_server_command_process_timeout:179: Calling PING command
23:31:36 silc_server_command_send_status_reply:491: Sending command status 0
23:31:36 silc_server_packet_send:47: Sending COMMAND REPLY packet
23:31:36 silc_server_command_free:307: Command context 0x48c54f40 refcnt 1->0
23:31:43 silc_server_packet_parse_type:299: Received COMMAND packet [flags 0]
23:31:43 silc_server_command_process_timeout:179: Calling PING command
23:31:43 silc_server_command_send_status_reply:491: Sending command status 0
23:31:43 silc_server_packet_send:47: Sending COMMAND REPLY packet
23:31:43 silc_server_command_free:307: Command context 0x48c55680 refcnt 1->0
23:31:47 silc_server_purge_expired_clients:1260: Expire timeout
=== Window terminated (Thu Apr 17 23:31:47 2008) ===

ah well, an opportunity to move onto newer code with today's commits 
included, I'm not sure whether or not they would have prevented this.

<sthen at pyxis:/usr/obj/ports/silc-server-1.1.4-operops/silc-server-1.1.4/apps/silcd:21>$ sudo gdb ./silcd /var/log/cores/silcd.core.20080417
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "sparc64-unknown-openbsd4.3"...
Core was generated by `silcd'.
Program terminated with signal 10, Bus error.
Reading symbols from /usr/local/lib/libiconv.so.4.0...done.
Loaded symbols for /usr/local/lib/libiconv.so.4.0
Reading symbols from /usr/lib/libpthread.so.10.0...done.
Loaded symbols for /usr/lib/libpthread.so.10.0
Reading symbols from /usr/lib/libc.so.44.0...done.
Loaded symbols for /usr/lib/libc.so.44.0
Reading symbols from /usr/libexec/ld.so...done.
Loaded symbols for /usr/libexec/ld.so
#0  0x00000000001b8c84 in silc_hash_free (hash=0x10000073) at silchash.c:267
267         silc_free(hash->context);
(gdb) bt full
#0  0x00000000001b8c84 in silc_hash_free (hash=0x10000073) at silchash.c:267
No locals.
#1  0x000000000010fa74 in silc_idlist_del_data (entry=0x48c59400) at idlist.c:57
        idata = 0x48c59400
#2  0x000000000011da6c in silc_server_purge_expired_clients (schedule=0x47986f00, app_context=0x4d620400, type=SILC_TASK_EXPIRE, fd=0, context=0x4d620400)
    at server.c:1276
        server = 0x4d620400
        client = 0x48c59400
        id_list = 0x4fc16080
        curtime = 1208471507
#3  0x0000000000198f50 in silc_schedule_dispatch_timeout (schedule=0x47986f00, dispatch_all=0 '\0') at silcschedule.c:114
        t = 0x41491280
        task = 0x41491280
        curtime = {tv_sec = 1208471507, tv_usec = 583396}
        count = 0
#4  0x00000000001993f8 in silc_schedule_iterate (schedule=0x47986f00, timeout_usecs=-1) at silcschedule.c:449
        timeout = {tv_sec = 3957091890884542292, tv_usec = 1333265280}
        ret = 0
#5  0x0000000000196784 in silc_schedule (schedule=0x47986f00) at silcschedule.c:499
No locals.
#6  0x000000000011d688 in silc_server_run (server=0x4d620400) at server.c:1190
No locals.
#7  0x000000000010dcb4 in main (argc=3, argv=0xfffffffffffd7a98) at silcd.c:753
        ret = 1
        opt = -1
        option_index = 1060152
        foreground = 1 '\001'
        opt_create_keypair = 0 '\0'
        silcd_config_file = 0x4fc16020 "/etc/silcd/silcd.conf"
        sa = {__sigaction_u = {__sa_handler = 0x1, __sa_sigaction = 0x1}, sa_mask = 0, sa_flags = 0}
(gdb) 

Thanks for the fixes so far, stability of 1.1.x is definitely
improving.




More information about the silc-devel mailing list