possible bug in libXt or libXaw

Mark Geisert mark@maxrnd.com
Sun Nov 16 09:14:00 GMT 2014


Marco Atzeri writes:
> On 11/16/2014 7:30 AM, Mark Geisert wrote:
> > Marco Atzeri writes:
> >> this is the pointer causing the segfault
> >>
> >> (gdb) p form->form.horiz_base
> >> $2 = (Widget) 0x6275705f6779632f
> >>
> >> while similar pointers have a much smaller address,
> >>
> >> (gdb) p w
> >> $5 = (Widget) 0x60014bd50
> >>
> >> so it that an assignment not clearing the upper
> >> portion of the pointer.
> >
> > $2 is not a pointer that needed partial clearing, it's a character string
> > "/cyg_pub".  Possibly a buffer overrun somewhere?  Hope the string fragment
> > points the way to somebody.
> >
> > ..mark
> >
> 
> thanks for the hint,  "/cyg_pub" is a directory on the root
> 
>   $ ls -l / |grep pub
> lrwxrwxrwx   1 marco          Administrators     19 Jun 26 19:11 pub -> 
> /cygdrive/e/cyg_pub
> 
> where the data file was stored,
> however moving it to "/tmp" produce as result
> 
>   p ref
> $1 = (Widget) 0x635f7261636e5f62 aka c_racn_b
> 
> that is not very meaningful to me, so the pointer corruption
> can be very generic.

One has to reverse the bytes, so it's "b_ncar_c", but that's likely still
not meaningful :-(.  You might try:
(gdb) set print pretty
(gdb) p form->form
      or
(gdb) p *form->form
and in the output, look at the struct items before horiz_base to see if one
of them is a char array that has been overrun.  If it's really hosed, all of
the items may have character string contents which means something before
(lower than) the address of form->form has been overrun.
Good Luck,

..mark



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/



More information about the Cygwin-xfree mailing list