[PATCH] Re: xmag segv's

2003-02-28 Thread Kevin Brosius
Yeah, that's what it's trying to do.  The problem is it doesn't check
the first child of root for InputOnly, only 2nd children on up.  E17 has
an InputOnly window as the first child of root, which breaks xmag.  I'd
suggest the following patch.  It checks to make sure all children are
InputOutput and will only return one that is, or the root.  (I suspect
that was the original intent.)

I've also included fixes for the null pointer dereferences exhibited
when the above code failed.  What do you think?

Summary of change:
  Fix case in xmag which would cause a BadMatch during a X_GetImage for
single child of root class InputOnly.  Also do some null pointer
protection.

-- 
Kevin


Mark Vojkovich wrote:
 
 
 On Wed, 26 Feb 2003, Kevin Brosius wrote:
 
  The background reports Depth: 0 with xwininfo.  That looks like a
  problem.
 
  The x,y,... to the GetImage seem good, 1103,302,64,64.
 
What does xwininfo say the Class is?  It should be InputOnly.
 Depth 0 windows are InputOnly.
 
Can you poke around in xmag's FindWindow?  Maybe the logic
 in there is busted.  I'm not really following what it's supposed
 to be doing.  Looks like it starts at the root and works it's way
 towards the pointer (out of the screen) until the last InputOutput
 window, which is the only type it can grab from.  I would guess it
 wants the frontmost InputOutput window under the pointer.
 
 Mark.
 
 
  --
  Kevin
 
 
  Mark Vojkovich wrote:
  
  
  Are there depth 32 windows or something?  If not
   GetImageAndAttributes should call XGetImage on the
   root window.   It looks like the checks in there are OK.
   Can you check the x,y,width,height to that first XGetImage
   in GetImageAndAttributes?
  
   Mark.
  
   On Tue, 25 Feb 2003, Kevin Brosius wrote:
  
Of course, that's not what causes the X_GetImage failure...  That
happens here:
   
in DragEH()
   
  case ButtonRelease: /* end drag mode */
if (event-xbutton.button == Button1) { /* get image */
  /* Problem: You can't get bits with XGetImage outside of its
window.
   *  xmag will only do a GetImage on the actual window in
the case
   *  where the depth of the window does not match the depth
of
   *  the root window.
   */
  GetImageAndAttributes(FindWindow(event-xmotion.x_root,
event-xmotion.y_root),
 event-xbutton.x_root,
 event-xbutton.y_root,
 srcWidth, srcHeight, data);
   
the GetImage call above generates the BadMatch.  The embedded
FindWindow() calls seem to succeed.
   
Kevin Brosius wrote:

 Latest CVS xmag (yesterday, changelog at 948.)  No, there's no overlay,
 this is on an ATI Mach64 at depth 16.  I do think e17 uses a virtual
 root window however.  Here's the problem:

 (gdb) r
 X Error of failed request:  BadMatch (invalid parameter attributes)
   Major opcode of failed request:  73 (X_GetImage)
   Serial number of failed request:  2375
   Current serial number in output stream:  2375

 Program received signal SIGSEGV, Segmentation fault.
 0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
 (gdb) bt
 #0  0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
 #1  0x0804b7cf in PopupNewScale (data=0x805b5b8) at xmag.c:975
 #2  0x0804a909 in DragEH (w=0x805fc38, closure=0x805b5b8,
 event=0xb460, continue_to_dispatch=0xb38f
 \001`ôÿ¿8ü\005\bdf\005\b8·\005\b\a) at xmag.c:664
 #3  0x400accf4 in XtDispatchEventToWidget () from
 /usr/X11R6/lib/libXt.so.6
 #4  0x400ad767 in _XtDefaultDispatcher () from /usr/X11R6/lib/libXt.so.6
 #5  0x400ad944 in XtDispatchEvent () from /usr/X11R6/lib/libXt.so.6
 #6  0x400adea2 in XtAppMainLoop () from /usr/X11R6/lib/libXt.so.6
 #7  0x0804bd43 in main (argc=1, argv=0xb554) at xmag.c:1105
 #8  0x402204a2 in __libc_start_main () from /lib/libc.so.6
 (gdb)  l

 static Pixel
 GetMinIntensity(hlPtr data)
 {
   XColor *colors = NULL, *mptr, *tptr;
   int i, ncolors;

   if (data-win_info.colormap == DefaultColormap(dpy, scr))
 return BlackPixel(dpy, scr);
   ncolors = Get_XColors(data-win_info, colors);
   mptr = tptr = colors; tptr++;

 903   for (i=1; incolors; i++)  {
 904 if ((int)Intensity(mptr)  (int)Intensity(tptr))
 905   mptr = tptr;
 906 tptr++;
 907   }
 908   return mptr-pixel;
 909 }
 910
 (gdb) p ncolors
 $1 = 0

 I pasted some extra lines from the function in question.  Get_XColors
 returns 0 in my case, and since mptr was set to NULL already, the return
 segv's when hit (the for loop falls through.)  What should happen in
 this case?  Can we just return BlackPixel like the previous 

Re: xmag segv's

2003-02-26 Thread Kevin Brosius
The background reports Depth: 0 with xwininfo.  That looks like a
problem.

The x,y,... to the GetImage seem good, 1103,302,64,64.

-- 
Kevin


Mark Vojkovich wrote:
 
 
Are there depth 32 windows or something?  If not
 GetImageAndAttributes should call XGetImage on the
 root window.   It looks like the checks in there are OK.
 Can you check the x,y,width,height to that first XGetImage
 in GetImageAndAttributes?
 
 Mark.
 
 On Tue, 25 Feb 2003, Kevin Brosius wrote:
 
  Of course, that's not what causes the X_GetImage failure...  That
  happens here:
 
  in DragEH()
 
case ButtonRelease: /* end drag mode */
  if (event-xbutton.button == Button1) { /* get image */
/* Problem: You can't get bits with XGetImage outside of its
  window.
 *  xmag will only do a GetImage on the actual window in
  the case
 *  where the depth of the window does not match the depth
  of
 *  the root window.
 */
GetImageAndAttributes(FindWindow(event-xmotion.x_root,
  event-xmotion.y_root),
   event-xbutton.x_root,
   event-xbutton.y_root,
   srcWidth, srcHeight, data);
 
  the GetImage call above generates the BadMatch.  The embedded
  FindWindow() calls seem to succeed.
 
  Kevin Brosius wrote:
  
   Latest CVS xmag (yesterday, changelog at 948.)  No, there's no overlay,
   this is on an ATI Mach64 at depth 16.  I do think e17 uses a virtual
   root window however.  Here's the problem:
  
   (gdb) r
   X Error of failed request:  BadMatch (invalid parameter attributes)
 Major opcode of failed request:  73 (X_GetImage)
 Serial number of failed request:  2375
 Current serial number in output stream:  2375
  
   Program received signal SIGSEGV, Segmentation fault.
   0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
   (gdb) bt
   #0  0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
   #1  0x0804b7cf in PopupNewScale (data=0x805b5b8) at xmag.c:975
   #2  0x0804a909 in DragEH (w=0x805fc38, closure=0x805b5b8,
   event=0xb460, continue_to_dispatch=0xb38f
   \001`ôÿ¿8ü\005\bdf\005\b8·\005\b\a) at xmag.c:664
   #3  0x400accf4 in XtDispatchEventToWidget () from
   /usr/X11R6/lib/libXt.so.6
   #4  0x400ad767 in _XtDefaultDispatcher () from /usr/X11R6/lib/libXt.so.6
   #5  0x400ad944 in XtDispatchEvent () from /usr/X11R6/lib/libXt.so.6
   #6  0x400adea2 in XtAppMainLoop () from /usr/X11R6/lib/libXt.so.6
   #7  0x0804bd43 in main (argc=1, argv=0xb554) at xmag.c:1105
   #8  0x402204a2 in __libc_start_main () from /lib/libc.so.6
   (gdb)  l
  
   static Pixel
   GetMinIntensity(hlPtr data)
   {
 XColor *colors = NULL, *mptr, *tptr;
 int i, ncolors;
  
 if (data-win_info.colormap == DefaultColormap(dpy, scr))
   return BlackPixel(dpy, scr);
 ncolors = Get_XColors(data-win_info, colors);
 mptr = tptr = colors; tptr++;
  
   903   for (i=1; incolors; i++)  {
   904 if ((int)Intensity(mptr)  (int)Intensity(tptr))
   905   mptr = tptr;
   906 tptr++;
   907   }
   908   return mptr-pixel;
   909 }
   910
   (gdb) p ncolors
   $1 = 0
  
   I pasted some extra lines from the function in question.  Get_XColors
   returns 0 in my case, and since mptr was set to NULL already, the return
   segv's when hit (the for loop falls through.)  What should happen in
   this case?  Can we just return BlackPixel like the previous test?
  
   --
   Kevin
  
   Mark Vojkovich wrote:
   
   
   I don't see how the window manager could be involved.   How
current of CVS?  The last thing in the CHANGELOG on my machine is
862 and I don't see this problem.
   
   I think BadMatch can happen with GetImage only if the app
trys to grab outside of the window.  I think xmag grabs on the
root window to avoid this, but can only do this when the depth
of the window in question is the root depth.  You don't have
different depth windows do you (overlay, depth 32 windows).
It looks like it knows how to clamp to the window dimensions.
   
   Maybe you can get a backtrace with a debug xmag?
   
   Maybe it has something to do with RandR?
   
Mark.
   
On Mon, 24 Feb 2003, Kevin Brosius wrote:
   
 I've noticed the following xmag segv with current CVS when trying to
 view part of the background in the development version of e (e17).  Is
 this an xmag or a window manager problem? (Or both?)


 (gdb) r
 X Error of failed request:  BadMatch (invalid parameter attributes)
   Major opcode of failed request:  73 (X_GetImage)
   Serial number of failed request:  668
   Current serial number in output stream:  668

 Program received signal SIGSEGV, Segmentation fault.
 0x0804afbf in GetMinIntensity ()

 This only occurs when the start point of the xmag selection window is
 

Re: xmag segv's

2003-02-26 Thread Mark Vojkovich
On Wed, 26 Feb 2003, Kevin Brosius wrote:

 The background reports Depth: 0 with xwininfo.  That looks like a
 problem.
 
 The x,y,... to the GetImage seem good, 1103,302,64,64.

   What does xwininfo say the Class is?  It should be InputOnly.
Depth 0 windows are InputOnly.

   Can you poke around in xmag's FindWindow?  Maybe the logic
in there is busted.  I'm not really following what it's supposed
to be doing.  Looks like it starts at the root and works it's way
towards the pointer (out of the screen) until the last InputOutput
window, which is the only type it can grab from.  I would guess it
wants the frontmost InputOutput window under the pointer.


Mark.

 
 -- 
 Kevin
 
 
 Mark Vojkovich wrote:
  
  
 Are there depth 32 windows or something?  If not
  GetImageAndAttributes should call XGetImage on the
  root window.   It looks like the checks in there are OK.
  Can you check the x,y,width,height to that first XGetImage
  in GetImageAndAttributes?
  
  Mark.
  
  On Tue, 25 Feb 2003, Kevin Brosius wrote:
  
   Of course, that's not what causes the X_GetImage failure...  That
   happens here:
  
   in DragEH()
  
 case ButtonRelease: /* end drag mode */
   if (event-xbutton.button == Button1) { /* get image */
 /* Problem: You can't get bits with XGetImage outside of its
   window.
  *  xmag will only do a GetImage on the actual window in
   the case
  *  where the depth of the window does not match the depth
   of
  *  the root window.
  */
 GetImageAndAttributes(FindWindow(event-xmotion.x_root,
   event-xmotion.y_root),
event-xbutton.x_root,
event-xbutton.y_root,
srcWidth, srcHeight, data);
  
   the GetImage call above generates the BadMatch.  The embedded
   FindWindow() calls seem to succeed.
  
   Kevin Brosius wrote:
   
Latest CVS xmag (yesterday, changelog at 948.)  No, there's no overlay,
this is on an ATI Mach64 at depth 16.  I do think e17 uses a virtual
root window however.  Here's the problem:
   
(gdb) r
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  73 (X_GetImage)
  Serial number of failed request:  2375
  Current serial number in output stream:  2375
   
Program received signal SIGSEGV, Segmentation fault.
0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
(gdb) bt
#0  0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
#1  0x0804b7cf in PopupNewScale (data=0x805b5b8) at xmag.c:975
#2  0x0804a909 in DragEH (w=0x805fc38, closure=0x805b5b8,
event=0xb460, continue_to_dispatch=0xb38f
\001`ôÿ¿8ü\005\bdf\005\b8·\005\b\a) at xmag.c:664
#3  0x400accf4 in XtDispatchEventToWidget () from
/usr/X11R6/lib/libXt.so.6
#4  0x400ad767 in _XtDefaultDispatcher () from /usr/X11R6/lib/libXt.so.6
#5  0x400ad944 in XtDispatchEvent () from /usr/X11R6/lib/libXt.so.6
#6  0x400adea2 in XtAppMainLoop () from /usr/X11R6/lib/libXt.so.6
#7  0x0804bd43 in main (argc=1, argv=0xb554) at xmag.c:1105
#8  0x402204a2 in __libc_start_main () from /lib/libc.so.6
(gdb)  l
   
static Pixel
GetMinIntensity(hlPtr data)
{
  XColor *colors = NULL, *mptr, *tptr;
  int i, ncolors;
   
  if (data-win_info.colormap == DefaultColormap(dpy, scr))
return BlackPixel(dpy, scr);
  ncolors = Get_XColors(data-win_info, colors);
  mptr = tptr = colors; tptr++;
   
903   for (i=1; incolors; i++)  {
904 if ((int)Intensity(mptr)  (int)Intensity(tptr))
905   mptr = tptr;
906 tptr++;
907   }
908   return mptr-pixel;
909 }
910
(gdb) p ncolors
$1 = 0
   
I pasted some extra lines from the function in question.  Get_XColors
returns 0 in my case, and since mptr was set to NULL already, the return
segv's when hit (the for loop falls through.)  What should happen in
this case?  Can we just return BlackPixel like the previous test?
   
--
Kevin
   
Mark Vojkovich wrote:


I don't see how the window manager could be involved.   How
 current of CVS?  The last thing in the CHANGELOG on my machine is
 862 and I don't see this problem.

I think BadMatch can happen with GetImage only if the app
 trys to grab outside of the window.  I think xmag grabs on the
 root window to avoid this, but can only do this when the depth
 of the window in question is the root depth.  You don't have
 different depth windows do you (overlay, depth 32 windows).
 It looks like it knows how to clamp to the window dimensions.

Maybe you can get a backtrace with a debug xmag?

Maybe it has something to do with RandR?

 Mark.

 On 

Re: xmag segv's

2003-02-26 Thread The Rasterman
On Wed, 26 Feb 2003 20:41:40 -0500 Kevin Brosius [EMAIL PROTECTED] babbled:

 The background reports Depth: 0 with xwininfo.  That looks like a
 problem.
 
 The x,y,... to the GetImage seem good, 1103,302,64,64.

naughty xmag. it's assuming it can do XGetImage on an InputOnlyWindow :) naughty
naughty.

 Mark Vojkovich wrote:
  
  
 Are there depth 32 windows or something?  If not
  GetImageAndAttributes should call XGetImage on the
  root window.   It looks like the checks in there are OK.
  Can you check the x,y,width,height to that first XGetImage
  in GetImageAndAttributes?
  
  Mark.
  
  On Tue, 25 Feb 2003, Kevin Brosius wrote:
  
   Of course, that's not what causes the X_GetImage failure...  That
   happens here:
  
   in DragEH()
  
 case ButtonRelease: /* end drag mode */
   if (event-xbutton.button == Button1) { /* get image */
 /* Problem: You can't get bits with XGetImage outside of its
   window.
  *  xmag will only do a GetImage on the actual window in
   the case
  *  where the depth of the window does not match the depth
   of
  *  the root window.
  */
 GetImageAndAttributes(FindWindow(event-xmotion.x_root,
   event-xmotion.y_root),
event-xbutton.x_root,
event-xbutton.y_root,
srcWidth, srcHeight, data);
  
   the GetImage call above generates the BadMatch.  The embedded
   FindWindow() calls seem to succeed.
  
   Kevin Brosius wrote:
   
Latest CVS xmag (yesterday, changelog at 948.)  No, there's no overlay,
this is on an ATI Mach64 at depth 16.  I do think e17 uses a virtual
root window however.  Here's the problem:
   
(gdb) r
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  73 (X_GetImage)
  Serial number of failed request:  2375
  Current serial number in output stream:  2375
   
Program received signal SIGSEGV, Segmentation fault.
0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
(gdb) bt
#0  0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
#1  0x0804b7cf in PopupNewScale (data=0x805b5b8) at xmag.c:975
#2  0x0804a909 in DragEH (w=0x805fc38, closure=0x805b5b8,
event=0xb460, continue_to_dispatch=0xb38f
\001`ôÿ¿8ü\005\bdf\005\b8·\005\b\a) at xmag.c:664
#3  0x400accf4 in XtDispatchEventToWidget () from
/usr/X11R6/lib/libXt.so.6
#4  0x400ad767 in _XtDefaultDispatcher () from /usr/X11R6/lib/libXt.so.6
#5  0x400ad944 in XtDispatchEvent () from /usr/X11R6/lib/libXt.so.6
#6  0x400adea2 in XtAppMainLoop () from /usr/X11R6/lib/libXt.so.6
#7  0x0804bd43 in main (argc=1, argv=0xb554) at xmag.c:1105
#8  0x402204a2 in __libc_start_main () from /lib/libc.so.6
(gdb)  l
   
static Pixel
GetMinIntensity(hlPtr data)
{
  XColor *colors = NULL, *mptr, *tptr;
  int i, ncolors;
   
  if (data-win_info.colormap == DefaultColormap(dpy, scr))
return BlackPixel(dpy, scr);
  ncolors = Get_XColors(data-win_info, colors);
  mptr = tptr = colors; tptr++;
   
903   for (i=1; incolors; i++)  {
904 if ((int)Intensity(mptr)  (int)Intensity(tptr))
905   mptr = tptr;
906 tptr++;
907   }
908   return mptr-pixel;
909 }
910
(gdb) p ncolors
$1 = 0
   
I pasted some extra lines from the function in question.  Get_XColors
returns 0 in my case, and since mptr was set to NULL already, the return
segv's when hit (the for loop falls through.)  What should happen in
this case?  Can we just return BlackPixel like the previous test?
   
--
Kevin
   
Mark Vojkovich wrote:


I don't see how the window manager could be involved.   How
 current of CVS?  The last thing in the CHANGELOG on my machine is
 862 and I don't see this problem.

I think BadMatch can happen with GetImage only if the app
 trys to grab outside of the window.  I think xmag grabs on the
 root window to avoid this, but can only do this when the depth
 of the window in question is the root depth.  You don't have
 different depth windows do you (overlay, depth 32 windows).
 It looks like it knows how to clamp to the window dimensions.

Maybe you can get a backtrace with a debug xmag?

Maybe it has something to do with RandR?

 Mark.

 On Mon, 24 Feb 2003, Kevin Brosius wrote:

  I've noticed the following xmag segv with current CVS when trying to
  view part of the background in the development version of e (e17). 
  Is this an xmag or a window manager problem? (Or both?)
 
 
  (gdb) r
  X Error of failed request:  BadMatch (invalid parameter attributes)
Major opcode of failed request:  73 

Re: xmag segv's

2003-02-26 Thread Mark Vojkovich
On Thu, 27 Feb 2003, Carsten Haitzler wrote:

 On Wed, 26 Feb 2003 20:41:40 -0500 Kevin Brosius [EMAIL PROTECTED] babbled:
 
  The background reports Depth: 0 with xwininfo.  That looks like a
  problem.
  
  The x,y,... to the GetImage seem good, 1103,302,64,64.
 
 naughty xmag. it's assuming it can do XGetImage on an InputOnlyWindow :) naughty
 naughty.

   No it's got checks in there to prevent that.  Either the logic is
broken or it's something else.


Mark.


___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: xmag segv's

2003-02-26 Thread The Rasterman
On Wed, 26 Feb 2003 21:15:57 -0500 (EST) Mark Vojkovich [EMAIL PROTECTED]
babbled:

 On Thu, 27 Feb 2003, Carsten Haitzler wrote:
 
  On Wed, 26 Feb 2003 20:41:40 -0500 Kevin Brosius [EMAIL PROTECTED]
  babbled:
  
   The background reports Depth: 0 with xwininfo.  That looks like a
   problem.
   
   The x,y,... to the GetImage seem good, 1103,302,64,64.
  
  naughty xmag. it's assuming it can do XGetImage on an InputOnlyWindow :)
  naughty naughty.
 
No it's got checks in there to prevent that.  Either the logic is
 broken or it's something else.

i'd guess the logic. i know prop and xiwininfo don't work right with :click on
the window to query for properies/info. they dont walk the window tree right.
so i'd guess xmag would have something too.


-- 
--- Codito, ergo sum - I code, therefore I am 
The Rasterman (Carsten Haitzler)[EMAIL PROTECTED]
[EMAIL PROTECTED]
Mobile Phone: +61 (0)413 451 899Home Phone: 02 9698 8615
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: xmag segv's

2003-02-25 Thread Mark Vojkovich
   Are there depth 32 windows or something?  If not
GetImageAndAttributes should call XGetImage on the
root window.   It looks like the checks in there are OK.
Can you check the x,y,width,height to that first XGetImage
in GetImageAndAttributes?

Mark. 

On Tue, 25 Feb 2003, Kevin Brosius wrote:

 Of course, that's not what causes the X_GetImage failure...  That
 happens here:
 
 in DragEH()
 
   case ButtonRelease: /* end drag mode */
 if (event-xbutton.button == Button1) { /* get image */
   /* Problem: You can't get bits with XGetImage outside of its
 window.
*  xmag will only do a GetImage on the actual window in
 the case
*  where the depth of the window does not match the depth
 of
*  the root window.
*/
   GetImageAndAttributes(FindWindow(event-xmotion.x_root, 
 event-xmotion.y_root),
  event-xbutton.x_root, 
  event-xbutton.y_root,
  srcWidth, srcHeight, data);
 
 the GetImage call above generates the BadMatch.  The embedded
 FindWindow() calls seem to succeed.
 
 Kevin Brosius wrote:
  
  Latest CVS xmag (yesterday, changelog at 948.)  No, there's no overlay,
  this is on an ATI Mach64 at depth 16.  I do think e17 uses a virtual
  root window however.  Here's the problem:
  
  (gdb) r
  X Error of failed request:  BadMatch (invalid parameter attributes)
Major opcode of failed request:  73 (X_GetImage)
Serial number of failed request:  2375
Current serial number in output stream:  2375
  
  Program received signal SIGSEGV, Segmentation fault.
  0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
  (gdb) bt
  #0  0x0804b48d in GetMinIntensity (data=0x805b5b8) at xmag.c:908
  #1  0x0804b7cf in PopupNewScale (data=0x805b5b8) at xmag.c:975
  #2  0x0804a909 in DragEH (w=0x805fc38, closure=0x805b5b8,
  event=0xb460, continue_to_dispatch=0xb38f
  \001`ôÿ¿8ü\005\bdf\005\b8·\005\b\a) at xmag.c:664
  #3  0x400accf4 in XtDispatchEventToWidget () from
  /usr/X11R6/lib/libXt.so.6
  #4  0x400ad767 in _XtDefaultDispatcher () from /usr/X11R6/lib/libXt.so.6
  #5  0x400ad944 in XtDispatchEvent () from /usr/X11R6/lib/libXt.so.6
  #6  0x400adea2 in XtAppMainLoop () from /usr/X11R6/lib/libXt.so.6
  #7  0x0804bd43 in main (argc=1, argv=0xb554) at xmag.c:1105
  #8  0x402204a2 in __libc_start_main () from /lib/libc.so.6
  (gdb)  l
  
  static Pixel
  GetMinIntensity(hlPtr data)
  {
XColor *colors = NULL, *mptr, *tptr;
int i, ncolors;
  
if (data-win_info.colormap == DefaultColormap(dpy, scr))
  return BlackPixel(dpy, scr);
ncolors = Get_XColors(data-win_info, colors);
mptr = tptr = colors; tptr++;
  
  903   for (i=1; incolors; i++)  {
  904 if ((int)Intensity(mptr)  (int)Intensity(tptr))
  905   mptr = tptr;
  906 tptr++;
  907   }
  908   return mptr-pixel;
  909 }
  910
  (gdb) p ncolors
  $1 = 0
  
  I pasted some extra lines from the function in question.  Get_XColors
  returns 0 in my case, and since mptr was set to NULL already, the return
  segv's when hit (the for loop falls through.)  What should happen in
  this case?  Can we just return BlackPixel like the previous test?
  
  --
  Kevin
  
  Mark Vojkovich wrote:
  
  
  I don't see how the window manager could be involved.   How
   current of CVS?  The last thing in the CHANGELOG on my machine is
   862 and I don't see this problem.
  
  I think BadMatch can happen with GetImage only if the app
   trys to grab outside of the window.  I think xmag grabs on the
   root window to avoid this, but can only do this when the depth
   of the window in question is the root depth.  You don't have
   different depth windows do you (overlay, depth 32 windows).
   It looks like it knows how to clamp to the window dimensions.
  
  Maybe you can get a backtrace with a debug xmag?
  
  Maybe it has something to do with RandR?
  
   Mark.
  
   On Mon, 24 Feb 2003, Kevin Brosius wrote:
  
I've noticed the following xmag segv with current CVS when trying to
view part of the background in the development version of e (e17).  Is
this an xmag or a window manager problem? (Or both?)
   
   
(gdb) r
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  73 (X_GetImage)
  Serial number of failed request:  668
  Current serial number in output stream:  668
   
Program received signal SIGSEGV, Segmentation fault.
0x0804afbf in GetMinIntensity ()
   
This only occurs when the start point of the xmag selection window is
over the background.  Clicking inside an application works fine, as does
clicking inside but near an application edge which shows both
application and background image magnification.  (I can magnify the
background as long as the click doesn't occur on it.)
   
--

Re: xmag segv's

2003-02-24 Thread Mark Vojkovich
   I don't see how the window manager could be involved.   How
current of CVS?  The last thing in the CHANGELOG on my machine is
862 and I don't see this problem.  
  
   I think BadMatch can happen with GetImage only if the app
trys to grab outside of the window.  I think xmag grabs on the
root window to avoid this, but can only do this when the depth
of the window in question is the root depth.  You don't have 
different depth windows do you (overlay, depth 32 windows).
It looks like it knows how to clamp to the window dimensions.

   Maybe you can get a backtrace with a debug xmag?

   Maybe it has something to do with RandR?

Mark.

On Mon, 24 Feb 2003, Kevin Brosius wrote:

 I've noticed the following xmag segv with current CVS when trying to
 view part of the background in the development version of e (e17).  Is
 this an xmag or a window manager problem? (Or both?)
 
 
 (gdb) r
 X Error of failed request:  BadMatch (invalid parameter attributes)
   Major opcode of failed request:  73 (X_GetImage)
   Serial number of failed request:  668
   Current serial number in output stream:  668
 
 Program received signal SIGSEGV, Segmentation fault.
 0x0804afbf in GetMinIntensity ()
 
 This only occurs when the start point of the xmag selection window is
 over the background.  Clicking inside an application works fine, as does
 clicking inside but near an application edge which shows both
 application and background image magnification.  (I can magnify the
 background as long as the click doesn't occur on it.)
 
 -- 
 Kevin
 ___
 Devel mailing list
 [EMAIL PROTECTED]
 http://XFree86.Org/mailman/listinfo/devel
 

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel