Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
tintin++ ogg sound player script for linux
Author: Robert Smith
Submitted by: Vladaar
6Dragons ogg Soundpack
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.4
Author: Vladaar
Submitted by: Vladaar
LoP 1.46
Author: Remcon
Submitted by: Remcon
LOP 1.45
Author: Remcon
Submitted by: Remcon
Users Online
CommonCrawl, Yandex, DotBot

Members: 0
Guests: 13
Stats
Files
Topics
Posts
Members
Newest Member
481
3,739
19,386
621
KellieBusb
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » General » Smaug Snippets » Copyover with Kavir protocol ...
Forum Rules | Mark all | Recent Posts

Copyover with Kavir protocol snippet
< Newer Topic :: Older Topic > gdb results

Pages:<< prev 1 next >>
Post is unread #1 Apr 1, 2018, 6:11 am   Last edited Apr 1, 2018, 6:12 am by Vladaar
Go to the top of the page
Go to the bottom of the page

Vladaar
Fledgling
GroupMembers
Posts44
JoinedNov 24, 2016

Anyone have any luck with getting copyover not to crash with the snippet using his copyoverget copyoverset functions?

I am saving mudclient to playerfile now, I suppose I could take out the ability for MSDP with copyover. Using old copyover code doesn't crash, but I am at least getting a core it so worth giving it a go, to do it as he intended.


#0 0x00000000004a22c9 in write_to_buffer (d=d@entry=0x3b44e20, txt=0x8ec720 <colorize(char const*, descriptor_data*)::result> "\033[0;34m",
length=length@entry=0) at comm.c:1979
1979 if ( d->pProtocol->WriteOOB > 0 )
(gdb) bt
#0 0x00000000004a22c9 in write_to_buffer (d=d@entry=0x3b44e20, txt=0x8ec720 <colorize(char const*, descriptor_data*)::result> "\033[0;34m",
length=length@entry=0) at comm.c:1979
#1 0x0000000000498da0 in send_to_desc (txt=<optimized out>, d=0x3b44e20) at color.c:1577
#2 0x0000000000498dd7 in send_to_char (txt=<optimized out>, ch=ch@entry=0x3b42920) at color.c:1593
#3 0x0000000000498e12 in set_char_color (AType=AType@entry=44, ch=ch@entry=0x3b42920) at color.c:1490
#4 0x00000000004a3fb5 in act (AType=AType@entry=44, format=format@entry=0x63ff00 "A puff of ethereal smoke dissipates around you!",
ch=0x3b42920, arg1=arg1@entry=0x0, arg2=arg2@entry=0x0, type=type@entry=3) at comm.c:2884
#5 0x00000000004a95ab in copyover_recover () at copyover.c:385
#6 0x00000000004a7e27 in main (argc=<optimized out>, argv=<optimized out>;) at comm.c:812
(gdb) frame 0
#0 0x00000000004a22c9 in write_to_buffer (d=d@entry=0x3b44e20, txt=0x8ec720 <colorize(char const*, descriptor_data*)::result> "\033[0;34m",
length=length@entry=0) at comm.c:1979
1979 if ( d->pProtocol->WriteOOB > 0 )
(gdb) list
1974 return;
1975
1976
1977 txt = ProtocolOutput( d, txt, &length );
1978
1979 if ( d->pProtocol->WriteOOB > 0 )
1980 --d->pProtocol->WriteOOB;
1981
1982
1983 /*
(gdb)

(gdb) print txt
$1 = 0x8ec720 <colorize(char const*, descriptor_data*)::result> "\033[0;34m"
(gdb) print &length
$2 = (size_t *) 0x7ffe16ef0ce8
(gdb) print d->pProtocol
$3 = (protocol_t *) 0x0
(gdb) print d
$4 = (DESCRIPTOR_DATA *) 0x3b44e20
(gdb) print d->pProtocol->WriteOOB
Cannot access memory at address 0x0
(gdb)


For some reason, it seems the d->pProtocol optimizes out.

If anyone wants to help with debugging I'd appreciate it. Thanks!
       
Post is unread #2 Apr 1, 2018, 7:53 am   Last edited Apr 1, 2018, 7:53 am by joeyfogas
Go to the top of the page
Go to the bottom of the page

joeyfogas
Apprentice
GroupMembers
Posts77
JoinedAug 28, 2016

never been good with gdb
       
Post is unread #3 Apr 1, 2018, 12:32 pm   Last edited Apr 1, 2018, 12:40 pm by Vladaar
Go to the top of the page
Go to the bottom of the page

Vladaar
Fledgling
GroupMembers
Posts44
JoinedNov 24, 2016

hrm, maybe it's because d->character is not const but pProtocol->apDescriptor is const?

There is definitely a issue in write_to_buffer or ProtocolOutput maybe more likely as it totally looses d at


txt = ProtocolOutput( d, txt, &length );

if ( d->pProtocol->WriteOOB > 0 )
--d->pProtocol->WriteOOB;

Which my write_to_buffer looks like
void write_to_buffer( DESCRIPTOR_DATA * d, const char *txt, size_t length )
{
   if( !d )
   {
      bug( "Write_to_buffer: NULL descriptor" );
      return;
   }

   /*
    * Normally a bug... but can happen if loadup is used.
    */
   if( !d->outbuf )
      return;


    txt = ProtocolOutput( d, txt, &length );

    if ( d->pProtocol->WriteOOB > 0 )
        --d->pProtocol->WriteOOB;


   /*
    * Find length in case caller didn't.
    */
   if( length <= 0 )
      length = strlen( txt );



ProtocolOutput looks like

const char *ProtocolOutput( descriptor_t *apDescriptor, const char *apData, size_t *apLength )
{
   static char Result[MAX_OUTPUT_BUFFER+1];
   const char Tab[] = "\t";
   const char MSP[] = "!!";
   const char MXPStart[] = "\033[1z<";
   const char MXPStop[] = ">\033[7z";
   const char LinkStart[] = "\033[1z<send>\033[7z";
   const char LinkStop[] = "\033[1z</send>\033[7z";

   bool_t bTerminate = false, bUseMXP = false, bUseMSP = false;
#ifdef COLOUR_CHAR
   bool_t bColourOn = COLOUR_ON_BY_DEFAULT;
#endif /* COLOUR_CHAR */
   int i = 0; /* Index values */
   size_t j = 0;
   protocol_t *pProtocol = apDescriptor ? apDescriptor->pProtocol : NULL;
  if ( pProtocol == NULL || apData == NULL )
      return apData;

   /* Strip !!SOUND() triggers if they support MSP or are using sound */
/*   if ( pProtocol->bMSP || pProtocol->pVariables[eMSDP_SOUND]->ValueInt )
      bUseMSP = true;
*/
   for ( ; i < MAX_OUTPUT_BUFFER && apData[j] != '\0' && !bTerminate && 
      (*apLength <= 0 || j < *apLength); ++j )
   {
      if ( apData[j] == '\t' )
      {
         const char *pCopyFrom = NULL;

         switch ( apData[++j] )
         {
            case '\t': /* Two tabs in a row will display an actual tab */
               pCopyFrom = Tab;
               break;

       
Post is unread #4 Apr 2, 2018, 5:18 am
Go to the top of the page
Go to the bottom of the page

Vladaar
Fledgling
GroupMembers
Posts44
JoinedNov 24, 2016

It's definitely protocoloutput it's loosing descriptor in.

       
Post is unread #5 Apr 2, 2018, 2:33 pm
Go to the top of the page
Go to the bottom of the page

Vladaar
Fledgling
GroupMembers
Posts44
JoinedNov 24, 2016

Leia gave me answer I was looking for.

Needed to add d->pProtocol = ProtocolCreate( ); to copyover_recover so that the descriptor would persist.
       
Post is unread #6 Apr 3, 2018, 6:24 pm
Go to the top of the page
Go to the bottom of the page

Vladaar
Fledgling
GroupMembers
Posts44
JoinedNov 24, 2016

Check it out guys. It is working awesome now :)

http://6dragons.tk/MushClient.png
       
Post is unread #7 Apr 3, 2018, 8:14 pm
Go to the top of the page
Go to the bottom of the page

Remcon
Geomancer
GroupAdministrators
Posts1,874
JoinedJul 26, 2005

glad you got it working man
       
Pages:<< prev 1 next >>