Jump to content

  •  

Bug Tracker Migration

June 3rd
Good news everyone! The staff has decided that it is time to slowly kill off this Bug Tracker. We will begin the process of slowly migrating from this Bug Tracker over to our Github Issues which can be found here: https://github.com/HerculesWS/Hercules/issues

Over the next couple of days, I will be closing off any opportunity to create new reports. However, I still will keep the opportunity to reply to existing Bug Reports. Doing this will allow us to slowly fix any bug reports we have listed here so that we can easily migrate over to our Issue Tracker.

Update - June 7th 2015: Creating new bug posts has been disabled. Please use our https://github.com/HerculesWS/Hercules/issues tracker to post bugs. Users are still able to reply to existing bug posts.

- Administration

Issue Information

  • #007140

  • 0 - None Assigned

  • Fixed

Issue Confirmations

  • Yes (1)No (0)
Photo

Channel System Problem

Posted by Frost on 31 March 2013 - 01:01 PM

Hi! i notice that in the channel system, when i try to type #asdasdasd or any other names, ETC. the map server will crash. i suggest to add a display notice that if i typed eg: #Indishandsome ( if this channel is not created ) a message will show like this "#Indishandsome" Channel is not Available or not exist.

Ind 
changed status to: Needs More Info

can you please elaborate on how to reproduce? i didn't crash o-o (it does have a message when channel is not found)

hmm i use default modification, then when i try to use #trade it crashes the map server.

i think #trade is missing coz when i try to use @channel list, only 3 out of 4 is shown. main, offtopic, support

hum o-o that is weird, i have the default modification and #trade is there hmmm nothing else different?

when i try to use #trade in "whisper box" the small box in the left, it crashes the server.

hum o_O I still can't reproducee T_T well there is one way to figure oo can you provide a gdb dump of the crash?

Hmm i think i got the error in my client try to use older clients like 2010-07-30

can you send me your client exe? i dont have one like that and it'll take me quite some time to get one diffed (im bad with client stuff D:)

Hmm sorry ind i'm using ipad right now but you can diff your own client here http://rathena.org/t...iff_patcher.php

Btw im using 2010-07-30

my lua files are not 2010-07-03 compatible D: i'll wait for the gdb dump

thanks to Mysterious I was able to get the client properly setup, no crashes or whatsoever. couldn't reproduce.

hmm.. try to not use @join <#channel_name>, instead use #trade directly, i've noticed that i'm in #map channel then i try to use #trade.

I did test that too, couldn't reproduce. our best way to figure this is if you provide me with a gdb dump of the crash (start map server with gdb (gdb ./map-server) and then crash it by doing that, then type 'bt full' and copy the output here)

hmm im sorry ind, but im testing it on offline, my operating system is win 7.

Well, I just have test this, and it's crashing for me too, but only when I have >1 users online.

BTW, here is the gdb dump (I hope it will be ok, because it's my first time debugging Hercules)
#0  clif_parse_WisMessage (fd=7, sd=0xdc4fa80) at clif.c:10143
        k = 2 '\002'
        channel = 0x7
        chname = 0xac7fb402 "\004\t\t\b\026"
        dstsd = <value optimized out>
        i = <value optimized out>
        target = 0xac7fb4e8 "#adsa"
        message = 0xac7fb500 "adsa"
        namelen = 5
        messagelen = <value optimized out>
#1  0x08090fce in clif_parse (fd=7) at clif.c:16541
        cmd = 140627808
        packet_ver = 31
        packet_len = <value optimized out>
        err = 6
        sd = 0xdc4fa80
        pnum = 0
#2  0x081e07ce in do_sockets (next=50) at socket.c:809
        rfd = {__fds_bits = {128, 0 <repeats 31 times>}}
        timeout = {tv_sec = 0, tv_usec = 5686}
        ret = <value optimized out>
        i = 7
#3  0x081deb65 in main (argc=1, argv=0xbfb96fa4) at core.c:334
        next = -1469706568



due to this one
void clif_hercules_chsys_delete(struct hChSysCh *channel) {
     if( db_size(channel->users) && !hChSys.closing ) {
          DBIterator *iter; struct map_session_data *sd;
          char message[60];
          unsigned char i;
          sprintf(message, "#%s channel is being shut down",channel->name);
          clif->chsys_msg(channel,sd,message); <<<<<<< sd is used before it was initialize
          iter = db_iterator(channel->users);
          for( sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter) ) {
               for( i = 0; i < sd->channel_count; i++ ) {
                    if( sd->channels[i] == channel ) {
                         sd->channels[i] = NULL;
:meow:

changed status to: Confirmed
changed status to: Needs More Info

Well, I just have test this, and it's crashing for me too, but only when I have >1 users online.

BTW, here is the gdb dump (I hope it will be ok, because it's my first time debugging Hercules)

#0  clif_parse_WisMessage (fd=7, sd=0xdc4fa80) at clif.c:10143
        k = 2 '\002'
        channel = 0x7
        chname = 0xac7fb402 "\004\t\t\b\026"
        dstsd = <value optimized out>
        i = <value optimized out>
        target = 0xac7fb4e8 "#adsa"
        message = 0xac7fb500 "adsa"
        namelen = 5
        messagelen = <value optimized out>
#1  0x08090fce in clif_parse (fd=7) at clif.c:16541
        cmd = 140627808
        packet_ver = 31
        packet_len = <value optimized out>
        err = 6
        sd = 0xdc4fa80
        pnum = 0
#2  0x081e07ce in do_sockets (next=50) at socket.c:809
        rfd = {__fds_bits = {128, 0 <repeats 31 times>}}
        timeout = {tv_sec = 0, tv_usec = 5686}
        ret = <value optimized out>
        i = 7
#3  0x081deb65 in main (argc=1, argv=0xbfb96fa4) at core.c:334
        next = -1469706568


Thank you very much. by the way,
is this your clif.c line 10134?
			} else if( channel->pass[0] == '\0' ) {


due to this one

void clif_hercules_chsys_delete(struct hChSysCh *channel) { if( db_size(channel->users) && !hChSys.closing ) { DBIterator *iter; struct map_session_data *sd; char message[60]; unsigned char i; sprintf(message, "#%s channel is being shut down",channel->name); clif->chsys_msg(channel,sd,message); <<<<<<< sd is used before it was initialize iter = db_iterator(channel->users); for( sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter) ) { for( i = 0; i < sd->channel_count; i++ ) { if( sd->channels[i] == channel ) { sd->channels[i] = NULL;
:meow:

ops i'm sorry i didn't see your reply D: ( i guess i was so hectic when i saw the dump that i jumped straight to the reply box not paying attention to any other replies D: ) you're absolutely absolutely right, ...however the gdb dump doesn't point there so I guess there is more than 1 error

what malufett found was fixed here: https://github.com/H...7d2345b3c83b0f3
however I think this was not the cause of this bug (since channel deletion is not performed when you try to pm, so the reason for the crash is still unclear)