Re: [xml] Entering freeze for release of libxml2-2.9.9



Daniel Veillard schrieb am 29.11.18 um 21:20:
On Mon, Nov 26, 2018 at 11:48:37AM +0100, Nikolai Weibull via xml wrote:
Stefan Behnel, 2018-11-25 15:37:
Nikolai Weibull schrieb am 24.11.18 um 00:12:
Yes, it seems that my patch for data in interleaves was added and
this may be the cause of these issues. The regression tests didn’t
display them, so this is something different. Could we perhaps get a
minimal test that breaks?

Here is what I could come up with so far. Since it's heavily stripped
down,
it probably isn't very reasonable anymore. The original schema is here:

https://raw.githubusercontent.com/lxml/lxml/82601a09d015bc3e7a4090223fcbb9a5d5d4590d/src/lxml/isoschematron/resources/rng/iso-schematron.rng

This is the direct file link now. I had attached the shortened test files here:

https://mail.gnome.org/archives/xml/2018-November/msg00023.html


Thank you!  As far as my tests go, with the patches that I’ve provided, this
validates without any issues.  I really hope we can get my patches from the
merge request into master so that this issue can be fixed.

  TBH it's weird it fails to validate for me with 2.9.8, with 2.9.9-rc1 and
with 2.9.9-rc1 with the data interleave patch reverted ...

I tried both lxml's test suite and my stripped down test files with 2.9.8
and the two RCs now, and all of them pass with 2.9.8, but fail with both
2.9.9-rc1 and 2.9.9-rc2.

I figured out how to build libxml2 from a git checkout now so that I could
bisect it. The bug was definitely introduced in c8e5f9588, which is
Nikolai's change from November 22nd.

I used

    git bisect run bash -c "make clean && make &&
        ./xmllint --relaxng ../iso-schematron.rng ../fail_schema.sch"

The change looks simple, but also a bit opaque to me. It could be that it's
related to the interleaving of optional tags/attributes and text somehow.
At least, that's what this part of the change might suggest:

-        groups[nbgroups]->defs = xmlRelaxNGGetElements(ctxt, cur, 0);
+        groups[nbgroups]->defs = xmlRelaxNGGetElements(ctxt, cur, 2);

And, in fact, changing that line in the latest master branch back to the
original "0" argument makes the validation pass for me. It probably also
reverts most of the intented behaviour that Nikolai wanted to achieve. :(

Stefan


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]