Dr Brain wrote: |
What's the file look like? If it's a back trace, you can find out why the zone was crashing. |
Dr Brain wrote: |
Check out scripts/run-asss
You'll have to edit ASSSHOME to get it to work. After that, just run the script. |
Code: Show/Hide --- a/src/core/config.c Tue Feb 03 15:55:10 2009 -0600 +++ b/src/core/config.c Sun Feb 08 18:24:52 2009 -0500 @@ -497,6 +497,7 @@ removed = LLRemove(&cf->handles, ch); pthread_mutex_unlock(&cf->mutex); assert(removed); + afree(ch); } |
Code: Show/Hide #7 0x0804f0f4 in afree (ptr=0x58850026) at main/util.c:136
#8 0x080952b5 in paction (p=0x8150b58, action=1) at core/filetrans.c:301 ud = (struct upload_data *) 0x8151128 |
Code: Show/Hide local int unload_c_module(mod_args_t *args)
{ c_mod_data_t *cmd = args->privdata; if (cmd->main) if ((cmd->main)(MM_UNLOAD, mm, ALLARENAS) == MM_FAIL) return MM_FAIL; /*if (cmd->handle && !cmd->ismyself) dlclose(cmd->handle); afree(cmd);*/ return MM_OK; } |
Initrd.gz wrote: |
Hi all.
My ASSS program keeps closing, giving me a "Segmentation fault" message and leaving a file in the root directory. Is there a way to stop them, or at least a script that successfully restarts ASSS like in HS. If it helps at all, I checked ASSS with Valgrind, and it detected several leaks in the core modules (I remember the config module was one) |
Code: Show/Hide $ gdb bin/asss
GNU gdb 6.8-debian Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i486-linux-gnu"... (gdb) break core/filetrans.c:paction Breakpoint 1 at 0x8095250: file core/filetrans.c, line 292. (gdb) run Starting program: /home/initrdgz/asss-1.4.4/bin/asss [Thread debugging using libthread_db enabled] asss 1.4.4 built at Jun 25 2009 00:59:28 Loading modules... <loading modules removed> Breakpoint 1, paction (p=0x814fbe8, action=0) at core/filetrans.c:292 292 struct upload_data *ud = PPDATA(p, udkey); (gdb) watch ud Hardware watchpoint 2: ud (gdb) c Continuing. Hardware watchpoint 2: ud Old value = (struct upload_data *) 0x8150114 New value = (struct upload_data *) 0x815016c paction (p=0x814fbe8, action=0) at core/filetrans.c:293 293 LOCK(); (gdb) print ud->work_dir $1 = 0x0 (gdb) c Continuing. Watchpoint 2 deleted because the program has left the block in which its expression is valid. 0x08057ac1 in process_player_states (v=0x0) at core/core.c:342 342 DO_CBS(CB_PLAYERACTION, (gdb) info watchpoint Num Type Disp Enb Address What 1 breakpoint keep y 0x08095250 in paction at core/filetrans.c:292 breakpoint already hit 1 time (gdb) |
Quote: |
valgrind --trace-children=yes --tool=memcheck --leak-check=yes --track-origins=yes --log-file=valgrind.log bin/asss |
Quote: |
==8341== Invalid free() / delete / delete[]
==8341== at 0x4025E5A: free (vg_replace_malloc.c:323) ==8341== by 0x804F0F9: afree (util.c:136) ==8341== by 0x80952DE: paction (filetrans.c:303) ==8341== by 0x8057F50: process_player_states (core.c:435) ==8341== by 0x805A0DF: RunLoop (mainloop.c:63) ==8341== by 0x804CF9B: main (main.c:293) ==8341== Address 0x384c0077 is 1158375 bytes inside data symbol "temporary" |