Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!mips!dimacs.rutgers.edu!rutgers!cmcl2!uupsi!sunic!ugle.unit.no!hanche From: hanche@imf.unit.no (Harald Hanche-Olsen) Newsgroups: comp.sys.apollo Subject: MITs Xapollo (R4) server in gpr mode Message-ID: Date: 6 Mar 91 20:57:57 GMT Sender: news@ugle.unit.no Organization: The Norwegian Institute of Technology, Trondheim, Norway. Lines: 81 In another post, I talked about our problems with the X11R4 Xapollo server, as compiled from the standared sources and run in mfb mode. Now I want to talk about problems with the same server in gpr mode: It seems to work ok except for certain startup problems. At the heart of the problem are three (undocumented?) calls gpr_$init_wm(...), gpr_$$inq_rectangle_id(...), aws_$init(...) where the latter returns the status code: 06090001 (not an resource ID (graphics/IDM/RM resource manager)) In the log file, I find this ---------------- apUnitScreenInit: aws_$init failed. 06090001 Fatal server bug! no screens found ---------------- After this Xapollo exits, xdm starts a new one, and the process repeats a number of times -- maybe zero, frequently two or three times, occasionally up to ten times -- until the call succeeds and the server comes up. The relevant code from mit/server/ddx/apollo/ap_init.c looks like this (with some omissions): ---------------- static Bool apUnitScreenInit(screenIndex, pScreen, argc, argv) int screenIndex; ScreenPtr pScreen; int argc; /* these two may NOT be changed */ char **argv; { aws_$display_t scr; scr.unit = 0; scr.screen = pDisp->display_unit - 1; /* Initializing a bunch of of data structures, deleted */ /*=>*/ gpr_$init_wm (gpr_$borrow, (short)(pDisp->display_unit), disp, hi_plane, &pDisp->display_bitmap, &status); apXSolo = (status.all == status_$ok); if (apXSolo) { gpr_$rect_id_t rectID; /* Get rectangle ID from gpr bitmap for root rectangle */ /*=>*/ rectID = gpr_$$inq_rectangle_id (&pDisp->display_bitmap, &status); if (status.all != status_$ok) { xfree (pDisp); return FALSE; } /* Init aws */ /*=>*/ (void) aws_$init (scr, rectID, &status); if (status.all != status_$ok) { ErrorF("apUnitScreenInit: aws_$init failed. %08x\n", status.all); ---------------- and this is where we get the error message from. Now, I cannot find any documentation for the three calls marked /*=>*/ above, but it seems apparent that aws_$init will not accept the rectID returned by gpr_$$inq_rectangle_id just before!? Can anybody tell me where those calls are documented? Why do they sometimes fail and sometimes succeed? If that is the way it has to be, maybe I could let Xapollo loop on these calls until success, rather than exiting and forcing xdm to start another Xapollo? So many questions - and I have none of the answers. Suggestions are welcome. - Harald Hanche-Olsen Division of Mathematical Sciences The Norwegian Institute of Technology N-7034 Trondheim, NORWAY