Login
User Name:

Password:



Register

Forgot your password?
Dusting off the old code...
Jul 15, 2019 10:53 pm
By InfiniteAxis
Forum Search/User Post History
May 13, 2019 12:43 pm
By Keirath
AFKMud 2.2.2
Mar 3, 2019 5:35 pm
By Samson
Development
Nov 28, 2018 12:10 pm
By Keirath
First Immortal
Oct 12, 2018 2:02 pm
By GatewaySysop
SmaugFUSS 1.9.3
Author: Various
Submitted by: Samson
AFKMud 2.2.2
Author: AFKMud Team
Submitted by: Samson
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
Users Online
CommonCrawl

Members: 0
Guests: 0
Stats
Files
Topics
Posts
Members
Newest Member
482
3,748
19,405
583
Monserrate

Today's Birthdays
There are no member birthdays today.
» SmaugMuds » 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 8:11 am   Last edited Apr 1, 2018 8: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 "\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 "\033[0;34m",
length=length@entry=0) at comm.c:1979
#1 0x0000000000498da0 in send_to_desc (txt=, d=0x3b44e20) at color.c:1577
#2 0x0000000000498dd7 in send_to_char (txt=, 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=, argv=) at comm.c:812
(gdb) frame 0
#0 0x00000000004a22c9 in write_to_buffer (d=d@entry=0x3b44e20, txt=0x8ec720 "\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 "\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 9:53 am   Last edited Apr 1, 2018 9: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 2:32 pm   Last edited Apr 1, 2018 2: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\033[7z";
   const char LinkStop[] = "\033[1z\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 7: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 4: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 8: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 10: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 >>