Bug 1961002

Summary: libxml2-2.9.12-1.fc33.x86_64 breaks php dom behavior
Product: [Fedora] Fedora Reporter: Harald Reindl <h.reindl>
Component: libxml2Assignee: Igor Raits <igor.raits>
Status: CLOSED EOL QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 33CC: fedora, igor.raits, pflodstrom, veillard
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-11-30 19:01:35 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Harald Reindl 2021-05-17 03:00:56 UTC
2021-05-16T11:44:32+0200 SUBDEBUG Upgrade: libxml2-2.9.12-1.fc33.x86_64
2021-05-16T11:44:37+0200 SUBDEBUG Upgraded: libxml2-2.9.10-8.fc33.x86_64 

this update breaks long years standing autotests of our main cms application and removing random <br> tags from expected outputs is not funny because that means open long years existing content and fix a simple typo may end in a completly different formatted output

finding and isolated reproducer out of the cms code and template engine would be a challenge but that update is simply unacceptable and would even break our PGO PHP builds running the testsuite as part of the profiling run

---------------------------------------------------------------------------------------------------------------------
      <a href="http://localhost/show_content.php?hid=3_5&amp;item_id=3_5&amp;nl_counter=3#anchor7"></a><br>
      <a href="http://localhost/show_content.php?sid=3&amp;item_id=3&amp;nl_counter=3#anchor6"></a><br>
      <a href="http://localhost/show_content.php?sid=3_4&amp;item_id=3_4&amp;nl_counter=3#anchor5"></a><br>
+     <a href="http://localhost/show_content.php?sid=3_3&amp;nl_counter=3#anchor4"></a>
-     <a href="http://localhost/show_content.php?sid=3_3&amp;nl_counter=3#anchor4"></a><br>
      <a href="http://localhost/show_content.php?hid=3_2&amp;nl_counter=3#anchor3"></a><br>
      <a href="http://localhost/show_content.php?sid=3_1&amp;nl_counter=3#anchor2"></a><br>
      <a href="http://localhost/show_content.php?nl_counter=3#anchor1"></a><br>
@@ -170,7 +170,7 @@
      <a href="http://localhost/show_content.php?hid=3_5&amp;item_id=3_5&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=3&amp;item_id=3&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=3_4&amp;item_id=3_4&amp;nl_counter=3"></a><br>
+     <a href="http://localhost/show_content.php?sid=3_3&amp;nl_counter=3"></a>
-     <a href="http://localhost/show_content.php?sid=3_3&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?hid=3_2&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=3_1&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?nl_counter=3"></a><br>
@@ -162,7 +162,7 @@
      <a href="http://localhost/show_content.php?hid=2_5&amp;item_id=2_5&amp;nl_counter=3#anchor7"></a><br>
      <a href="http://localhost/show_content.php?sid=2&amp;item_id=2&amp;nl_counter=3#anchor6"></a><br>
      <a href="http://localhost/show_content.php?sid=2_4&amp;item_id=2_4&amp;nl_counter=3#anchor5"></a><br>
+     <a href="http://localhost/show_content.php?sid=2_3&amp;nl_counter=3#anchor4"></a>
-     <a href="http://localhost/show_content.php?sid=2_3&amp;nl_counter=3#anchor4"></a><br>
      <a href="http://localhost/show_content.php?hid=2_2&amp;nl_counter=3#anchor3"></a><br>
      <a href="http://localhost/show_content.php?sid=2_1&amp;nl_counter=3#anchor2"></a><br>
      <a href="http://localhost/show_content.php?nl_counter=3#anchor1"></a><br>
@@ -126,7 +126,7 @@
      <a href="http://localhost/show_content.php?hid=2_5&amp;item_id=2_5&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=2&amp;item_id=2&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=2_4&amp;item_id=2_4&amp;nl_counter=3"></a><br>
+     <a href="http://localhost/show_content.php?sid=2_3&amp;nl_counter=3"></a>
-     <a href="http://localhost/show_content.php?sid=2_3&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?hid=2_2&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=2_1&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?nl_counter=3"></a><br>
@@ -118,7 +118,7 @@
      <a href="http://localhost/show_content.php?hid=1_5&amp;item_id=1_5&amp;nl_counter=3#anchor7"></a><br>
      <a href="http://localhost/show_content.php?sid=1&amp;item_id=1&amp;nl_counter=3#anchor6"></a><br>
      <a href="http://localhost/show_content.php?sid=1_4&amp;item_id=1_4&amp;nl_counter=3#anchor5"></a><br>
+     <a href="http://localhost/show_content.php?sid=1_3&amp;nl_counter=3#anchor4"></a>
-     <a href="http://localhost/show_content.php?sid=1_3&amp;nl_counter=3#anchor4"></a><br>
      <a href="http://localhost/show_content.php?hid=1_2&amp;nl_counter=3#anchor3"></a><br>
      <a href="http://localhost/show_content.php?sid=1_1&amp;nl_counter=3#anchor2"></a><br>
      <a href="http://localhost/show_content.php?nl_counter=3#anchor1"></a><br>
@@ -82,7 +82,7 @@
      <a href="http://localhost/show_content.php?hid=1_5&amp;item_id=1_5&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=1&amp;item_id=1&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=1_4&amp;item_id=1_4&amp;nl_counter=3"></a><br>
+     <a href="http://localhost/show_content.php?sid=1_3&amp;nl_counter=3"></a>
-     <a href="http://localhost/show_content.php?sid=1_3&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?hid=1_2&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?sid=1_1&amp;nl_counter=3"></a><br>
      <a href="http://localhost/show_content.php?nl_counter=3"></a><br>
@@ -74,7 +74,7 @@
+++ new_706713438e4e788edf6784dffba78ad4f08ac4a4d0df9e3c86e359fd.txt 2021-05-17 00:30:08.106587767 +0200
--- old_01940fc6599a399180bb20bda25f5bfb025988c1d1ee314d23ca2121.txt 2021-05-17 00:30:08.106587767 +0200
---------------------------------------------------------------------------------------------------------------------
CALLER: '/autotests/api_newsletter_ng.php:89':

Comment 1 Harald Reindl 2021-05-29 13:02:46 UTC
ping - you can't break long years running expected behavior with a random update in the middle of a stable release

Comment 2 Harald Reindl 2021-05-29 16:28:52 UTC
stripped down reproducer (php cli-script, the passthru shows the installed libxml package update in a different terminal)
look at the disappearing <br> after the "</a" was corrected to "</a>" with the new version
not funny after 6 years in the middle of a stable fedora release

[harry@srv-rhsoft:/downloads]$ cat test.php
#!/usr/bin/php
<?php
$data = "<a href=\"http://localhost/show_content.php?sid=1_3#anchor4\"></a<br>\nTest\n";
echo "------------------------------------------------------------------------------------\n";
passthru("rpm -q libxml2");
echo "\nINPUT:\n";
echo $data;
libxml_use_internal_errors(TRUE);
$doc = new DOMDocument;
$doc->resolveExternals = FALSE;
$doc->preserveWhiteSpace = TRUE;
$doc->strictErrorChecking = FALSE;
$doc->formatOutput = TRUE;
$doc->recover = TRUE;
$doc->validateOnParse = TRUE;
$doc->substituteEntities = FALSE;
$loaded = $doc->loadHTML("<?xml encoding=\"UTF-8\">{$data}", LIBXML_HTML_NODEFDTD);
$body = $doc->getElementsByTagName('body')->item(0);
$data = '';
$fragment = $doc->createDocumentFragment();
while($body->childNodes->length > 0)
{
 $childNode = $body->childNodes->item(0);
 $fragment->appendChild($childNode);
 $data = "{$data}{$doc->saveHTML($childNode)}";
}
echo "\nOUTPUT:\n";
echo $data;
echo "------------------------------------------------------------------------------------\n";
?>



[harry@srv-rhsoft:/downloads]$ php test.php
------------------------------------------------------------------------------------
libxml2-2.9.10-8.fc33.x86_64

INPUT:
<a href="http://localhost/show_content.php?sid=1_3#anchor4"></a<br>
Test

OUTPUT:
<a href="http://localhost/show_content.php?sid=1_3#anchor4"></a><br>
Test
------------------------------------------------------------------------------------



[harry@srv-rhsoft:/downloads]$ php test.php
------------------------------------------------------------------------------------
libxml2-2.9.12-4.fc33.x86_64

INPUT:
<a href="http://localhost/show_content.php?sid=1_3#anchor4"></a<br>
Test

OUTPUT:
<a href="http://localhost/show_content.php?sid=1_3#anchor4"></a>
Test
------------------------------------------------------------------------------------

Comment 3 Harald Reindl 2021-06-03 13:31:12 UTC
and it also breaks php.net upstream autotests

FAILED TEST SUMMARY
---------------------------------------------------------------------
Test DOMDocument::loadXML() detects not-well formed XML [ext/dom/tests/DOMDocument_loadXML_error1.phpt]
Test DOMDocument::load() detects not-well formed XML [ext/dom/tests/DOMDocument_load_error1.phpt]

Comment 4 Per F 2021-07-18 21:30:24 UTC
wine applications or games that use libxml2-2.9.12-4.fc33.x86_64 are also affected.

Typical wine output before application crashes (in this case Colonization IV)

regexp error : failed to compile: Improper quantifier
regexp error : failed to compile: xmlFAParseRegExp: extra characters
0104:err:msxml:Schema_parse error code 1756: Element '{http://www.w3.org/2001/XMLSchema}pattern': The value '([0-9]{,14})([.][0-9]{,4})?' of the facet 'pattern' is not a valid regular expression.
regexp error : failed to compile: Improper quantifier
regexp error : failed to compile: xmlFAParseAtom: expecting ')'
regexp error : failed to compile: xmlFAParseRegExp: extra characters
0104:err:msxml:Schema_parse error code 1756: Element '{http://www.w3.org/2001/XMLSchema}pattern': The value '([0-9A-Fa-f]{4})([-]{,1}[0-9A-Fa-f]{4})*' of the facet 'pattern' is not a valid regular expression.
0104:fixme:msxml:cache_entry_from_xdr_doc failed to parse doc
0104:fixme:msxml:domdoc_putref_schemas (0x1294c30)->(0x11def00 {VT_DISPATCH: 0x12913a4}): semi-stub

By downgrading to libxml2-2.9.10-8.fc33.x86_64 wine does not complain anymore and all works fine.

Latest rawhide version of libxml2 is also broken (libxml2-2.9.12-5.fc35.x86_64), shows same problem as libxml2-2.9.12-4.fc33.x86_64.

Comment 5 Harald Reindl 2021-07-18 21:35:09 UTC
sadly nobody gives a shit - so i adopted my autotests and decided to live with the fallout in the hope nobody will fix it now to prevent a endless back and forth

in a professional world people would write the slightest autotests for their shit, won't happen - i gave up after 20 years in that business full of shit and just deal with the outfull! why? because i am too old wo wait months for every little piece of shit

Comment 6 Ben Cotton 2021-11-04 13:50:25 UTC
This message is a reminder that Fedora 33 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora 33 on 2021-11-30.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
Fedora 'version' of '33'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 33 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 7 Ben Cotton 2021-11-04 14:19:48 UTC
This message is a reminder that Fedora 33 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora 33 on 2021-11-30.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
Fedora 'version' of '33'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 33 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 8 Ben Cotton 2021-11-04 15:17:34 UTC
This message is a reminder that Fedora 33 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora 33 on 2021-11-30.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
Fedora 'version' of '33'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 33 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 9 Ben Cotton 2021-11-30 19:01:35 UTC
Fedora 33 changed to end-of-life (EOL) status on 2021-11-30. Fedora 33 is
no longer maintained, which means that it will not receive any further
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of
Fedora please feel free to reopen this bug against that version. If you
are unable to reopen this bug, please file a new report against the
current release. If you experience problems, please add a comment to this
bug.

Thank you for reporting this bug and we are sorry it could not be fixed.