The Linux Foundation is a non-profit consortium dedicated to fostering the growth of Linux.
Assorted comments and experiences with LSB 3.1.1 testing. Note that comments about possible waivers are to be considered informal; the way to get a waiver granted is to file a problem report through the certification system. For instructions about installing and running these tests, see Platform_Tests
Note on maintaining this page: start by pasting test results from a given system which has an unknown failure. As analysis proceeds, migrate those raw results into an explanation; don't remove the problems. The idea is to have an in informal log of problems people might run into.
Contents |
Newer versions of Xorg may show a new failure:
/tset/CH05/crtclrmp/crtclrmp 11 FAIL
Code change looks to be here:
--- xorg-server-1.2.0/dix/dispatch.c.vsw4-crtclrmp 2007-03-19 16:58:49.0000
00000 -0400
+++ xorg-server-1.2.0/dix/dispatch.c 2007-03-19 16:59:44.000000000 -0400
@@ -2459,7 +2459,7 @@ ProcCreateColormap(register ClientPtr cl
return(result);
}
client->errorValue = stuff->visual;
- return(BadMatch);
+ return(BadValue);
}
int
This change appears to be deliberate also see.
One message will come up on many test envionments:
FreeFontPath: FPE "/usr/share/X11/fonts/misc/" refcount is 2, should be 1; fixing.
If it appears, it will appear for every test, however the tests still run.
As noted in Platform_Tests the default font paths presented during the "interview questions" are appropriate for versions prior to X.org version 7, the purpose of the interview is to allow this to be changed, but experienced test users tend to get used to just accepting the defaults. If you do this and should not have, at least three tests will fail, including one of the "clsdsply" tests, and there will probably be an error message up front when Xvfb is started.
If you have already completed the interview and need to back out the wrong choice,
you can cause it to rerun next time by removing the file:
/opt/lsb/test/lsb-xts5/.configured
To check what got set as font paths, do:
grep XT_FONTPATH /opt/lsb/test/lsb-xts5/xts5/tetexec.cfg
/tset/Xlib13/allwevnts/Test 20 FAIL /tset/Xlib13/allwevnts/Test 24 FAIL /tset/Xlib13/stpntrmppn/Test 3 FAIL /tset/Xproto/allcclr/Test 3 UNRESOLVED /tset/Xproto/allcclrcll/Test 3 UNRESOLVED /tset/Xproto/allcclrpln/Test 3 UNRESOLVED /tset/Xproto/allcnmdclr/Test 3 UNRESOLVED /tset/Xproto/allwevnts/Test 3 UNRESOLVED /tset/Xproto/bll/Test 3 UNRESOLVED /tset/Xproto/chngactvpn/Test 3 UNRESOLVED /tset/Xproto/chnggc/Test 3 UNRESOLVED /tset/Xproto/chnghsts/Test 3 UNRESOLVED /tset/Xproto/chngkybrdc/Test 3 UNRESOLVED /tset/Xproto/chngkybrdm/Test 3 UNRESOLVED /tset/Xproto/chngpntrcn/Test 3 UNRESOLVED /tset/Xproto/chngprprty/Test 3 UNRESOLVED /tset/Xproto/chngsvst/Test 3 UNRESOLVED /tset/Xproto/chngwdwatt/Test 3 UNRESOLVED /tset/Xproto/clrar/Test 3 UNRESOLVED /tset/Xproto/clsfnt/Test 3 UNRESOLVED /tset/Xproto/cnfgrwdw/Test 3 UNRESOLVED /tset/Xproto/cnvrtslctn/Test 3 UNRESOLVED /tset/Xproto/cpyar/Test 3 UNRESOLVED /tset/Xproto/cpyclrmpan/Test 3 UNRESOLVED /tset/Xproto/cpygc/Test 3 UNRESOLVED /tset/Xproto/cpypln/Test 3 UNRESOLVED /tset/Xproto/crcltwdw/Test 3 UNRESOLVED /tset/Xproto/crtclrmp/Test 3 UNRESOLVED /tset/Xproto/crtcrsr/Test 3 UNRESOLVED /tset/Xproto/crtgc/Test 3 UNRESOLVED /tset/Xproto/crtglyphcr/Test 3 UNRESOLVED /tset/Xproto/crtpxmp/Test 3 UNRESOLVED /tset/Xproto/crtwdw/Test 3 UNRESOLVED /tset/Xproto/dltprprty/Test 3 UNRESOLVED /tset/Xproto/dstrysbws/Test 3 UNRESOLVED /tset/Xproto/dstrywdw/Test 3 UNRESOLVED /tset/Xproto/fllply/Test 3 UNRESOLVED /tset/Xproto/frclrmp/Test 3 UNRESOLVED /tset/Xproto/frclrs/Test 3 UNRESOLVED /tset/Xproto/frcrsr/Test 3 UNRESOLVED /tset/Xproto/frcscrnsvr/Test 3 UNRESOLVED /tset/Xproto/frgc/Test 3 UNRESOLVED /tset/Xproto/frpxmp/Test 3 UNRESOLVED /tset/Xproto/grbbttn/Test 3 UNRESOLVED /tset/Xproto/grbky/Test 3 UNRESOLVED /tset/Xproto/grbkybrd/Test 3 UNRESOLVED /tset/Xproto/grbpntr/Test 3 UNRESOLVED /tset/Xproto/grbsrvr/Test 3 UNRESOLVED /tset/Xproto/gtatmnm/Test 3 UNRESOLVED /tset/Xproto/gtfntpth/Test 3 UNRESOLVED /tset/Xproto/gtgmtry/Test 3 UNRESOLVED /tset/Xproto/gtimg/Test 3 UNRESOLVED /tset/Xproto/gtinptfcs/Test 3 UNRESOLVED /tset/Xproto/gtkybrdcnt/Test 3 UNRESOLVED /tset/Xproto/gtkybrdmpp/Test 3 UNRESOLVED /tset/Xproto/gtmdfrmppn/Test 3 UNRESOLVED /tset/Xproto/gtmtnevnts/Test 3 UNRESOLVED /tset/Xproto/gtpntrcntr/Test 3 UNRESOLVED /tset/Xproto/gtpntrmppn/Test 3 UNRESOLVED /tset/Xproto/gtprprty/Test 3 UNRESOLVED /tset/Xproto/gtscrnsvr/Test 3 UNRESOLVED /tset/Xproto/gtslctnown/Test 3 UNRESOLVED /tset/Xproto/gtwdwattrb/Test 3 UNRESOLVED /tset/Xproto/imgtxt16/Test 3 UNRESOLVED /tset/Xproto/imgtxt8/Test 3 UNRESOLVED /tset/Xproto/instllclrm/Test 3 UNRESOLVED /tset/Xproto/intrnatm/Test 3 UNRESOLVED /tset/Xproto/kllclnt/Test 3 UNRESOLVED /tset/Xproto/lkpclr/Test 3 UNRESOLVED /tset/Xproto/lstextnsns/Test 3 UNRESOLVED /tset/Xproto/lstfnts/Test 3 UNRESOLVED /tset/Xproto/lstfntswth/Test 3 UNRESOLVED /tset/Xproto/lsthsts/Test 3 UNRESOLVED /tset/Xproto/lstinstlld/Test 3 UNRESOLVED /tset/Xproto/lstprprts/Test 3 UNRESOLVED /tset/Xproto/mpsbws/Test 3 UNRESOLVED /tset/Xproto/mpwdw/Test 3 UNRESOLVED /tset/Xproto/noprtn/Test 4 UNRESOLVED /tset/Xproto/opnfnt/Test 3 UNRESOLVED /tset/Xproto/plyarc/Test 3 UNRESOLVED /tset/Xproto/plyfllarc/Test 3 UNRESOLVED /tset/Xproto/plyfllrctn/Test 3 UNRESOLVED /tset/Xproto/plyln/Test 3 UNRESOLVED /tset/Xproto/plypnt/Test 3 UNRESOLVED /tset/Xproto/plyrctngl/Test 3 UNRESOLVED /tset/Xproto/plysgmnt/Test 3 UNRESOLVED /tset/Xproto/plytxt16/Test 3 UNRESOLVED /tset/Xproto/plytxt8/Test 3 UNRESOLVED /tset/Xproto/ptimg/Test 3 UNRESOLVED /tset/Xproto/qrybstsz/Test 3 UNRESOLVED /tset/Xproto/qryclrs/Test 3 UNRESOLVED /tset/Xproto/qryextnsn/Test 3 UNRESOLVED /tset/Xproto/qryfnt/Test 3 UNRESOLVED /tset/Xproto/qrykymp/Test 3 UNRESOLVED /tset/Xproto/qrypntr/Test 3 UNRESOLVED /tset/Xproto/qrytr/Test 3 UNRESOLVED /tset/Xproto/qrytxtextn/Test 3 UNRESOLVED /tset/Xproto/rclrcrsr/Test 3 UNRESOLVED /tset/Xproto/rprntwdw/Test 3 UNRESOLVED /tset/Xproto/rttprprts/Test 3 UNRESOLVED /tset/Xproto/sndevnt/Test 3 UNRESOLVED /tset/Xproto/staccsscnt/Test 3 UNRESOLVED /tset/Xproto/stclprctng/Test 3 UNRESOLVED /tset/Xproto/stclsdwnmd/Test 3 UNRESOLVED /tset/Xproto/stdshs/Test 3 UNRESOLVED /tset/Xproto/stfntpth/Test 3 UNRESOLVED /tset/Xproto/stinptfcs/Test 3 UNRESOLVED /tset/Xproto/stmdfrmppn/Test 3 UNRESOLVED /tset/Xproto/stpntrmppn/Test 3 UNRESOLVED /tset/Xproto/strclrs/Test 4 UNRESOLVED /tset/Xproto/strnmdclr/Test 4 UNRESOLVED /tset/Xproto/stscrnsvr/Test 3 UNRESOLVED /tset/Xproto/stslctnown/Test 3 UNRESOLVED /tset/Xproto/trnsltcrds/Test 3 UNRESOLVED /tset/Xproto/ungrbbttn/Test 3 UNRESOLVED /tset/Xproto/ungrbky/Test 3 UNRESOLVED /tset/Xproto/ungrbkybrd/Test 3 UNRESOLVED /tset/Xproto/ungrbpntr/Test 3 UNRESOLVED /tset/Xproto/ungrbsrvr/Test 3 UNRESOLVED /tset/Xproto/unmpsbws/Test 3 UNRESOLVED /tset/Xproto/unmpwdw/Test 3 UNRESOLVED /tset/Xproto/unnstllclr/Test 3 UNRESOLVED /tset/Xproto/wrppntr/Test 3 UNRESOLVED /tset/Xt11/tcalbrcrl/Test 1 UNRESOLVED /tset/Xt8/tmkgmreqt/Test 4 FAIL /tset/Xt8/tmkrsizrt/Test 4 FAIL Test was run: 20070104 11:46:10 Total Tests Passed: 5849 Total Tests Failed (including waived): 126 Total Tests Failed (excluding waived): 126
A patch is available for Xvfb (currently part of the x11-server src.rpm in Mandriva). Rui Feng published this on lsb-test in late 2005. At one time we had the full patch in our Xorg build, but it introduced other issues and it was pulled from the build. This is the portion I'm applying to lsb-xvfb:
allwevnts 20, 24 - Needs XinputExtension enabled:
--- xorg-server-1.1.1/mi/miinitext.c.lsb-xts5 2006-07-05 12:38:48.000000000 -0
600
+++ xorg-server-1.1.1/mi/miinitext.c 2007-01-02 09:39:37.000000000 -0700
@@ -565,7 +565,7 @@ InitExtensions(argc, argv)
#ifdef MULTIBUFFER
if (!noMultibufferExtension) MultibufferExtensionInit();
#endif
-#if defined(XINPUT) && !defined(NO_HW_ONLY_EXTS)
+#if defined(XINPUT)
if (!noXInputExtension) XInputExtensionInit();
#endif
#ifdef XTEST
stpntrmppn:
bug posted upstream, no change in status. Rui's patch addresses this:
--- xorg-server-1.1.1/dix/events.c.lsb-xts5 2006-07-05 12:38:47.000000000 -0
600
+++ xorg-server-1.1.1/dix/events.c 2007-01-02 09:39:37.000000000 -0700
@@ -3023,7 +3023,7 @@ ProcessPointerEvent (register xEvent *xE
#if !defined(XFree86Server) || !defined(XINPUT)
xE->u.u.detail = butc->map[key];
#endif
- if (xE->u.u.detail == 0)
+ if ((xE->u.u.detail == 0) || (butc->map[key] == 0))
return;
if (xE->u.u.detail <= 5)
butc->state |= (Button1Mask >> 1) << xE->u.u.detail;
@@ -3042,7 +3042,7 @@ ProcessPointerEvent (register xEvent *xE
#if !defined(XFree86Server) || !defined(XINPUT)
xE->u.u.detail = butc->map[key];
#endif
- if (xE->u.u.detail == 0)
+ if ((xE->u.u.detail == 0) || (butc->map[key] == 0))
return;
if (xE->u.u.detail <= 5)
butc->state &= ~((Button1Mask >> 1) << xE->u.u.detail);
If you look at the journal file, you will see:
INFO: Processing a big request child process was terminated by signal 13 (SIGPIPE)
for each UNRESOLVED.
Again, Rui's patch addresses these problems:
--- xorg-server-1.1.1/os/io.c.lsb-xts5 2006-07-05 12:38:48.000000000 -0600
+++ xorg-server-1.1.1/os/io.c 2007-01-02 09:39:37.000000000 -0700
@@ -432,15 +432,138 @@ ReadRequestFromClient(ClientPtr client)
else
needed = get_big_req_len(request, client);
}
+
+ /* added by phost on 20050901, begin */
+/* if (needed > maxBigRequestSize)
+ return BadLength; */
+ /* added by phost on 20050901, end */
#endif
client->req_len = needed;
needed <<= 2;
}
if (gotnow < needed)
{
+/* trying to fix the bigrequest bug, added by phost on 20050903, start */
+
+ if (client->big_requests && gotnow == oci->size )
+ {
+ /* for bigrequest, we need to read the whole request from buffer */
+
+ /* oci->lenLastReq = 0; */
+ if (needed > (MAXBUFSIZE << 2))
+ {
+ /* request is too big for us to handle */
+ YieldControlDeath();
+ return needed;
+ }
+ if ((oci->bufptr - oci->buffer + needed) > oci->size)
+ {
+ /*the request is too big to fit in the buffer */
+
+ if ((gotnow > 0) && (oci->bufptr != oci->buffer))
+ /* save the data we've already read */
+ memmove(oci->buffer, oci->bufptr, gotnow);
+ if (needed > oci->size)
+ {
+ /* make buffer bigger to accomodate request */
+ char *ibuf;
+
+ ibuf = (char *)xrealloc(oci->buffer, needed);
+ if (!ibuf)
+ {
+ YieldControlDeath();
+ return -1;
+ }
+ oci->size = needed;
+ oci->buffer = ibuf;
+ /* memmove(oci->buffer, oci->bufptr, gotnow); */
+ /* not sure, maybe should add this line, 20050904 by phost */
+ }
+ oci->bufptr = oci->buffer;
+ oci->bufcnt = gotnow;
+ }
+ /* XXX this is a workaround. This function is sometimes called
+ * after the trans_conn has been freed. In this case trans_conn
+ * will be null. Really ought to restructure things so that we
+ * never get here in those circumstances.
+ */
+ if (!oc->trans_conn)
+ {
+ /* treat as if an error occured on the read, which is what
+ * used to happen
+ */
+ YieldControlDeath();
+ return -1;
+ }
+
+while (gotnow < needed)
+{
+#ifdef LBX
+ if (oc->proxy && oc->proxy->compHandle)
+ result = (*oc->proxy->streamOpts.streamCompRead)(fd,
+ (unsigned char *)oci->buffer + oci->bufcnt,
+ oci->size - oci->bufcnt);
+ else
+#endif
+ result = _XSERVTransRead(oc->trans_conn, oci->buffer + oci->bufcnt,
+ oci->size - oci->bufcnt);
+ if (result < 0)
+ {
+ if ((result < 0) && ETEST(errno))
+ {
+#if defined(SVR4) && defined(i386) && !defined(sun)
+#if defined(LBX) && 0
+ /*
+ * For LBX connections, we can get a valid EWOULDBLOCK
+ * There is probably a better way of distinguishing LBX
+ * connections, but this works. (DHD)
+ */
+ extern int LbxRead();
+ if (oc->Read == LbxRead)
+#else
+ if (0)
+#endif
+#endif
+ {
+ YieldControlNoInput();
+ return 0;
+ }
+ }
+ YieldControlDeath();
+ return -1;
+ }
+
+ if (result == 0)
+ break;
+
+ oci->bufcnt += result;
+ gotnow += result;
+ result = gotnow;
+
+ usleep(100000);
+}
+ /* free up some space after huge requests */
+ if ((oci->size > BUFWATERMARK) &&
+ (oci->bufcnt < BUFSIZE) && (needed < BUFSIZE))
+ {
+ char *ibuf;
+
+ ibuf = (char *)xrealloc(oci->buffer, BUFSIZE);
+ if (ibuf)
+ {
+ oci->size = BUFSIZE;
+ oci->buffer = ibuf;
+ oci->bufptr = ibuf + oci->bufcnt - gotnow;
+ }
+ }
+ }
+ else
+/* trying to fix the bigrequest bug, added by phost on 20050903, end */
/* Still don't have enough; punt. */
- YieldControlNoInput();
- return 0;
+ {
+ YieldControlNoInput();
+ return 0;
+ }
}
}
if (needed == 0)
@@ -494,8 +617,9 @@ ReadRequestFromClient(ClientPtr client)
FD_CLR(fd, &ClientsWithInput);
else
#endif
- YieldControlNoInput();
+ YieldControlNoInput();
}
+
#ifdef SMART_SCHEDULE
if (SmartScheduleDisable)
#endif
@@ -508,14 +632,17 @@ ReadRequestFromClient(ClientPtr client)
oci->bufptr += (sizeof(xBigReq) - sizeof(xReq));
*(xReq *)oci->bufptr = *request;
oci->lenLastReq -= (sizeof(xBigReq) - sizeof(xReq));
- client->req_len -= (sizeof(xBigReq) - sizeof(xReq)) >> 2;
+ /* client->req_len -= (sizeof(xBigReq) - sizeof(xReq)) >> 2; */
+ /* added by phost */
+ if (client->req_len != 0)
+ client->req_len -= (sizeof(xBigReq) - sizeof(xReq)) >> 2;
}
#endif
client->requestBuffer = (pointer)oci->bufptr;
#ifdef DEBUG_COMMUNICATION
{
xReq *req = client->requestBuffer;
- ErrorF("REQUEST: ClientIDX: %i, type: 0x%x data: 0x%x len: %i\n",
+ ErrorF("REQUEST: ClientIDX: %i, type: 0x%x data: 0x%2x len: %2i\n",
client->index,req->reqType,req->data,req->length);
}
#endif
A bug is posted upstream, but doesn't appear to have any activity.
One problem with the patch, as I see it, is there is some sensitivity to the value of the
usleep(100000)
in io.c. Rui mentioned increasing this value in the thread on lsb-test.
For testing purposes, I've built a seperate lsb-xvfb. The source rpm is here.
While behavior looks somewhat repeatable on this machine, I'm not so sure results will be consistent across other machines/archs. In any event I wasn't able to find the magic value that lets all the Xproto tests pass.
These failures were also discussed on lsb-test in late 2005, and part of the patch that Rui posted addresses them (applied now to libxt src.rpm in Mandriva with new Xorg):
--- libXt-1.0.4/src/Geometry.c.lsb-xts5 2006-10-27 15:10:56.000000000 -0400
+++ libXt-1.0.4/src/Geometry.c 2007-01-04 07:37:19.000000000 -0500
@@ -173,7 +173,7 @@ _XtMakeGeometryRequest (
}
}
-#if 0
+#if 1
/*
* The Xt spec says that these conditions must generate
* error messages (not warnings), but many Xt applications
Application of this patch does clear the Xt8 failures, but local testing found that is also creates new failures:
/tset/Xt13/ttranslcd/Test 1 FAIL
ERROR: **************************************************************** ERROR: An Xt error occured during a toolkit call: ERROR: XtMakeGeometryRequest - parent not composite ERROR: ****************************************************************
And, it also affects the behavior of some applications, like "gv":
[stew@presario30 BUILD]$ gv Error: XtMakeGeometryRequest - parent not composite
/tests/functions/GtkTreeModel/GtkTreeModel 23 UNREPORTED
Symptom: Test will hang with a generous amount of console output during this test. If you kill the test from another console, the test run will complete with the above failure. Otherwise the test seems to eventually time out and you may get a false set of "PASS" results with a reduced test count. Journal output may look like this:
520|85 23 00003304 1 1|test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/03086 aa/tests/functions/GtkTreeModel/GtkTreeModel, TP number: 23 520|85 23 00003304 1 2|unexpected signal 6 (SIGABRT) received 520|85 23 00003304 1 3|unexpected signal 15 (SIGTERM) received 510|85|system 0, errno = 9 (EBADF): (dresfile.c, 976) write failed on temp resul t file 220|85 23 7 11:56:49|NORESULT (auto-generated by TCC) 80|85 1 11:56:49|TC End, scenario ref 86-0
Diagnosis: Confirmed GTK bug
/tests/functions/GtkMenu/GtkMenu 10 UNRESOLVED /tests/functions/GtkMenu/GtkMenu 19 UNRESOLVED
Symptom: Test crashes on the above tests. Journal out will look like this:
520|120 10 00003473 1 1|test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/0308 6aa/tests/functions/GtkMenu/GtkMenu, TP number: 10 520|120 10 00003473 1 2|unexpected signal 11 (SIGSEGV) received 220|120 10 2 12:04:26|UNRESOLVED
Diagnosis: Confirmed GTK Bug
/tests/functions/GtkTreeStore/GtkTreeStore 53 FAIL
Symptom: Test fails
Diagnosis: Seems to be a change in behavior in GTK. Filed upstream as diagnosis of the test case does not seem to indicate the test is faulty:
Feedback from upstream indicates the test case is faulty. Test has been updated to correct the behavior as of version 3.1.1-3.
/tests/functions/FileUtil/FileUtil 10 FAIL /tests/functions/FileUtil/FileUtil 11 FAIL /tests/functions/FileUtil/FileUtil 12 FAIL /tests/functions/FileUtil/FileUtil 13 FAIL /tests/functions/FileUtil/FileUtil 14 FAIL
Symptom: Test fails. Journal will show somehting like this:
200|45 10 15:20:16|TP Start 520|45 10 00029802 1 1|test case: /opt/lsb/test/desktop/gtkvts/tet_tmp_dir/29742 aa/tests/functions/FileUtil/FileUtil, TP number: 10 520|45 10 00029802 1 2|FileUtil.c, line 560: 520|45 10 00029802 1 3|lsb-desktop-test package is not installed properly 220|45 10 1 15:20:16|FAIL
Diagnosis: Bug in the test suite packaging. The lsb-desktop user was being removed in %postun, which in an upgrade scenario takes place after the installation of the new package adds the user. This has been corrected as of 3.1.1-3, but upgrades from previous versions my still exhibit this behavior.
Workaround: Uninstall/reinstall the package or upgrade 3.1.1-3 over itself using --force.
Symptom: Tjreport will show no tests passed or failed. Journal will look something like this.
20|/opt/lsb/test/desktop/fontconfig/tetexec.cfg 1|Config Start 30||TET_PASS_TC_NAME=True 30||TET_API_COMPLIANT=True 30||TET_VERSION=3.7-lite 40||Config End 70||"Starting fontconfig test suite" 10|0 /tc/tc1 12:59:05|TC Start, scenario ref 2-0 80|0 1 12:59:06|TC End, scenario ref 2-0 70||"Done running fontconfig test suite" 900|12:59:06|TCC End
Diagnosis: Possible incompatibility with the test suite python modules and the target system. Python crashes loading the modules with undefined symbols and tests never run.
Solution: As of 3.1.1-3, the test now uses lsb-python instead of the system python.