On Thu, 2008-10-16 at 13:49 +0200, Sascha Wilde wrote:
Timo Sirainen <tss@iki.fi> writes:
On Oct 15, 2008, at 5:57 PM, Sascha Wilde wrote:
#1 0x0806ab6c in command_unregister (name=0x815b9ab "LOGOUT") at commands.c:83 83 if (strcasecmp(cmd[i].name, name) == 0) { (gdb) p cmd[i] $1 = {name = 0xb7e65ce7 <Address 0xb7e65ce7 out of bounds>, func = 0xb7e6432d, flags = 0} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For some reasons this does _not_ happen when I simply close the connection (without explicitly logging out)...
Your plugin isn't probably unregistering some command it registered and the plugin is unloaded before commands_deinit() is called.
As said in my other mail, that was indeed the problem and it is now solved. The question still left is: why didn't I see the segfoult in the logs when the connection was closed hard?
A quick look with gdb shows, that the deinit stuff is called in both cases, so I'd guess its an logging issue?
I've no idea really. Perhaps it was just luck? :) If the process crashed, you would have gotten a "killed with signal 11" error to logs since it's detected and logged by the master process.