[comp.windows.x] Sun 386i server bug

mayer@gmdzi.gmd.de (Hans Mayer) (03/19/91)

Environment:
Sun 386i, os 4.0.2, X11R4 patchlevel 18

The recently posted tgif-2.1 is capable of crashing a sun386i color server.
I don't know if it is a bug in the generic color code or if it is 386i
specific because I have no other color system to test.
The crash is not reproducible on a sun3/80 with b/w monitor and server.

{venus:6} dbx /usr/local/bin/X11/Xsun core
Reading symbolic information...
Read 2017 symbols
stack overwritten
program terminated by signal SEGV (no mapping at the fault address)
(dbx) where
miPolyBuildEdge(0x0, 0x1, 0x0, 0x0, 0x0, 0x1e2, 0x70, 0x30, 0x1e0, 0x80, 0x1, 0xfbfffff0) at 0x5d725
miPolyBuildPoly(0xfbfffabc, 0xfbfffa7c, 0x3, 0x1e0, 0x80, 0xfbfffa08, 0xfbfff998, 0xfbfff994, 0xfbfff990, 0xfbfff988) at 0x5da9d
warning: core file read error: data space address too high
warning: core file read error: data space address too high
miLineJoin() at 0x5dfc8
stack overwritten

Any help appreciated. Thanks - Hans

-- 
Hans J. Mayer, mayer@gmdzi.gmd.de (or mayer@ddagmd11.BITNET)
German National Research Center for Computer Science (GMD)

di@athena.mit.edu (David Israel) (03/20/91)

In article <4343@gmdzi.gmd.de> mayer@gmdzi.gmd.de (Hans Mayer) writes:
>Environment:
>Sun 386i, os 4.0.2, X11R4 patchlevel 18
>
>The recently posted tgif-2.1 is capable of crashing a sun386i color server.
>I don't know if it is a bug in the generic color code or if it is 386i
>specific because I have no other color system to test.
>The crash is not reproducible on a sun3/80 with b/w monitor and server.
>
>{venus:6} dbx /usr/local/bin/X11/Xsun core
>Reading symbolic information...
>Read 2017 symbols
>stack overwritten
>program terminated by signal SEGV (no mapping at the fault address)
>(dbx) where
>miPolyBuildEdge(0x0, 0x1, 0x0, 0x0, 0x0, 0x1e2, 0x70, 0x30, 0x1e0, 0x80, 0x1, 0xfbfffff0) at 0x5d725
>miPolyBuildPoly(0xfbfffabc, 0xfbfffa7c, 0x3, 0x1e0, 0x80, 0xfbfffa08, 0xfbfff998, 0xfbfff994, 0xfbfff990, 0xfbfff988) at 0x5da9d
>warning: core file read error: data space address too high
>warning: core file read error: data space address too high
>miLineJoin() at 0x5dfc8
>stack overwritten
>
>Any help appreciated. Thanks - Hans
>

I suspect that this is a 386i Server bug.  By coincidence, I discovered 
today on a color 386i running SunOs 4.0.1 and X11R4, that the 3-D plotting
program "pdraw" (available from export.lcs.mit.edu in "3dplot.tar.Z") 
causes a nearly identical core-dump:

dbx /usr/local/X11R4/usr/bin/X11/Xsun core
Reading symbolic information...
Read 2028 symbols
stack overwritten
(dbx) where
miPolyBuildEdge(0x0, 0x1, 0x0, 0x0, 0xffffffff, 0x80000000, 0x153, 0xffffffd3, 0
x153, 0x135, 0x1, 0xfbfffffc) at 0x5e35e
miPolyBuildPoly(0xfbfffa20, 0xfbfff9e0, 0x3, 0x153, 0x135, 0xfbfff96c, 0xfbfff8f
c, 0xfbfff8f8, 0xfbfff8f4, 0xfbfff8ec) at 0x5e6d1
warning: core file read error: data space address too high
warning: core file read error: data space address too high
miLineJoin() at 0x5ebfc
stack overwritten
(dbx) quit

I have confirmed that pdraw has no trouble on at least one other
server.  Other than confirming that this is a bug in the 386i server, 
I'm not able to help -- has anybody fixed this?  If not, would any 
server hackers care to venture a guess as to where the problem lies?
Thanks.

David Israel (di@hstbme.mit.edu)

mayer@gmdzi.gmd.de (Hans Mayer) (03/22/91)

I received a patch from Danny Backx that solves the crashing server problem
(Thanks Danny!).
I have applied it to my server but haven't had the time to look how it solves
the problem. Maybe a server guru could comment on it.

- Hans

*** mifillarc.c.orig Mon Jun 25 10:40:58 1990
--- mifillarc.c Thu Jan  3 13:41:47 1991
***************
*** 253,258 ****
--- 253,260 ----
          k += edge->dy;
      edge->dx <<= 1;
      edge->dy <<= 1;
+     if (!edge->dx) goto vert; /* gross */
+     if (!edge->dy) goto horz; /* gross */
      miGetArcEdge(arc, edge, k, top, left);
  }
-- 
Hans J. Mayer, mayer@gmdzi.gmd.de (or mayer@ddagmd11.BITNET)
German National Research Center for Computer Science (GMD)