no noticeable difference in either output. the saxparser.rdb file that exists is attached. It is supposed to be opening it read only, i'm not sure what the file should contain as it's produced by the build process. Thanks. Jon On 13 March 2012 07:42, Stephan Bergmann <sbergman@redhat.com> wrote:
On 03/12/2012 09:21 PM, Michael Stahl wrote:On 12/03/12 15:09, Jonathan Adams wrote:# truss output of the specific saxparser command: ( LD_LIBRARY_PATH="/home/sal/LibreOffice/libo/solver/unxsoli/lib" truss -f /home/sal/LibreOffice/libo/solver/unxsoli/bin/saxparser af_NA /home/sal/LibreOffice/libo/i18npool/source/localedata/data/af_NA.xml localedata_af_NA_invis.cxx file:///home/sal/LibreOffice/libo/workdir/unxsoli/CustomTarget/i18npool/source/localedata/saxparser.rdb /home/sal/LibreOffice/libo/solver/unxsoli/bin/types.rdb -env:LO_LIB_DIR=file:///home/sal/LibreOffice/libo/solver/unxsoli/lib 2>&1 )> saxparser.logso it opens /home/sal/LibreOffice/libo/workdir/unxsoli/CustomTarget/i18npool/source/localedata/saxparser.rdb to file descriptor 3 successfully, closes it again, spawns a thread, then opens the same file again to fd 3 succesfully, mmaps the file succesfully, closes it again, then complains that it couldn't open a registry file... that's rather odd. perhaps the rdb file is broken or something?Opening it twice is ok. The code in SimpleRegistry::open (stoc/source/simpleregistry/simpleregisty.cxx) first tries to open it as an old style (binary) .rdb, and if that's the wrong format then opens it again as new style (XML). Looks like the XML parsing results in an exception (that is then unfortunately labelled as "could not be open readonly" in an outer level). Please apply the below patch to see where parsing fails:diff --git a/stoc/source/simpleregistry/textualservices.cxx b/stoc/source/simpleregistry/textualservices.cxx index 37540c8..baa88d4 100644 --- a/stoc/source/simpleregistry/textualservices.cxx +++ b/stoc/source/simpleregistry/textualservices.cxx @@ -1236,7 +1236,8 @@ TextualServices::TextualServices(rtl::OUString const & uri): { try { Parser(uri, data_); - } catch (css::container::NoSuchElementException &) { + } catch (css::container::NoSuchElementException &e) { +fprintf(stderr,"caught <%s>\n",rtl::OUStringToOString(e.Message,RTL_TEXTENCODING_UTF8).getStr()); throw css::registry::InvalidRegistryException( (uri + rtl::OUString(Stephan
Attachment:
saxparser.rdb
Description: Binary data