Apache OpenOffice (AOO) Bugzilla – Issue 101278
unxlngx6 smoketest jvmfwk crash
Last modified: 2009-07-16 10:05:13 UTC
The Ubuntu-8.04-amd64 tinderbox build of (DEV300m46 based) CWS sb107 failed during smoketest (<http://tinderbox.go-oo.org/tinder.cgi?tree=sb107&start-time=1240117802&display-hours=50>). However, all of the Ubuntu-8.04-amd64 builds 768, 771--774 failed during smoketest with the very same error ---8<--- TestLog -- Version: 1.6 error: Database: the test was not complete! open or services possibly failed! smoketest: ERROR: Error during testing no deinstallation from /tmp/OpenOffice/ FAILURE: smoketest aborted. dmake: Error code 5, while making 'make_test' ERROR: Error 65280 occurred while making /space/termite/slavedir/Ubuntu-64-Sun/workdir/smoketestoo_native ---8<--- Debugging this with a CWS sb107 based DEV300m46 unxlngx6.pro build on the tinderbox machine showed that sometimes (ca. half the time) the call of GetConnection at tags/DEV300_m46/smoketestoo_native/data/scripts/Test_DB.xba l. 37 causes a SIGSEGV with the attached stack.txt.
Created attachment 61732 [details] stack trace
Also applies to m48.
CCed: kz
.
This issue renders the test results of the Ubuntu-8.04 Buildbot unusable so please fix this ASAP!
cd: Set myself on CC.
@cli: Please disable smoketest on the box as long as this issue occurs.
Setup to reproduce: Run the smoketest until it crashes. Then OOo will not be uninstalled and resider in /tmp/OpenOffice. Or can run dmake noremove=1 in smoketestoo_native. (I didn't try the latter). The smoketest will have several Basic macros installed in OOo. Open the macro dialog and run StartTestWithDefaultOptions. This can be repeated until the error occurs. In order to debug change the line in the soffice script which starts the soffice. - "$sd_prog/$sd_binary" "$@" & + gdb "$sd_prog/$sd_binary" "$@" __xmlParserInputBufferCreateFilename ( URI=0x7f1449b9eb58 "/tmp/OpenOffice/UserInstallation/user/config/javasettings_Linux_X86_64.xml", enc=XML_CHAR_ENCODING_NONE) at xmlIO.c:2408 2408 if (((z_stream *)context)->avail_in > 4) { (gdb) where #0 __xmlParserInputBufferCreateFilename ( URI=0x7f1449b9eb58 "/tmp/OpenOffice/UserInstallation/user/config/javasettings_Linux_X86_64.xml", enc=XML_CHAR_ENCODING_NONE) at xmlIO.c:2408 #1 0x00007f1441bbcdbb in xmlNewInputFromFile__internal_alias (ctxt=0x7f14280caeb8, filename=0x7f1449b9eb58 "/tmp/OpenOffice/UserInstallation/user/config/javasettings_Linux_X86_64.xml") at parserInternals.c:1462 #2 0x00007f1441bbfab4 in xmlCreateURLParserCtxt__internal_alias ( filename=0x7f1449b9eb58 "/tmp/OpenOffice/UserInstallation/user/config/javasettings_Linux_X86_64.xml", options=0) at parser.c:12308 #3 0x00007f1441bd53cd in xmlSAXParseFileWithData__internal_alias (sax=0x0, filename=0x7f1449b9eb58 "/tmp/OpenOffice/UserInstallation/user/config/javasettings_Linux_X86_64.xml", recovery=0, data=0x0) at parser.c:12368 #4 0x00007f1444a98921 in jfw::NodeJava::prepareSettingsDocument (this=0x7fff51d56a20) context in non-null, however accessing the member avail_in will bring a message in gdb, telling that this memory cannot be accessed. context will be obtained by for (i = xmlInputCallbackNr - 1;i >= 0;i--) { if ((xmlInputCallbackTable[i].matchcallback != NULL) && (xmlInputCallbackTable[i].matchcallback(URI) != 0)) { context = xmlInputCallbackTable[i].opencallback(URI); if (context != NULL) { break; } } } As it happens opencallback is xmlGzfileOpen (xmlIO.c in libxml2). See also xmlRegisterDefaultInputCallbacks(void) where the callbacks are registered in a determined way. xmlGzfileOpen calls xmlGzfileOpen_real where eventually gzdopen is called. static void * xmlGzfileOpen_real (const char *filename) { const char *path = NULL; gzFile fd; if (!strcmp(filename, "-")) { fd = gzdopen(dup(0), "rb"); return((void *) fd); } gzdopen returns then a pointer which represents the context. So the conclusion is that something goes wrong with libz.so which is used from the system. In this case its a libz.so.1.2.3.3. Changing this lib against one from a different system did not help. The other library had the same version but was different in size. If libxml2 is build without using libz then the gzdopen function is not used of course. This can be achieved by adding the configure switch --with-zlib=no in libxml2/makefile.mk. Using the libxml2 without libz made that I could not reproduce the crash anymore by running the smoketest.
. *** This issue has been marked as a duplicate of 103585 ***