** Description changed:

  [Impact]
  
   * PNG optimization and changelog truncation can happen in parallel with 
symlinking docs across packages. When checking for duplicates files the 
duplicate check may compare the processed files with non-processed ones and in 
that case they are found to be different despite the processed (or the 
unprocessed) files would be identical. The resulting binary packages would be 
still valid, but may be different for different architectures since the 
parallel build process may hit this race condition when processing different 
files making the arch:any packages not coinstallable on a multiarch-enabled 
system.
   * One manifestation of the problem can be seen in 
https://launchpadlibrarian.net/355140796/buildlog_ubuntu-bionic-i386.gpm_1.20.7-5_BUILDING.txt.gz
 where symlinking's file comparison occurs while truncating the changelog:
  ...
  Searching for duplicated docs in dependency libgpm2...
  pkgstripfiles: Truncating usr/share/doc/libgpm2/changelog.Debian.gz to 
topmost ten records
  
  gzip: 
/<<PKGBUILDDIR>>/debian/libgpm-dev/../libgpm2/usr/share/doc/libgpm2/changelog.Debian.gz:
 unexpected end of file
  cmp: EOF on /dev/fd/62 which is empty
  ...
  
   * The fix is protecting png optimization and trucating changelogs with
  the same lock as used to serialize doc symlinking thus those steps are
- serializes as well.
+ serializes as well. The fix also skips optimizing PNGs and truncating
+ changelogs of dbgsym files in pkgstripfiles.
  
  [Test Case]
  
   * Build an affected package (like gpm) for i386 and amd64 with fixed 
pkgbinarymangler and observe the files in /usr/share/doc in the built packages 
to be identical and there should be no line like the following in the build log:
  gzip: 
/<<PKGBUILDDIR>>/debian/libgpm-dev/../libgpm2/usr/share/doc/libgpm2/changelog.Debian.gz:
 unexpected end of file
   * Note that due to the non-deterministic nature of the failure several 
builds could be necessary to reproduce the original problem and also for 
verifying that the problem is fixed. You can increase the chances of observing 
the failure by building the packages with higher level of parallelism (-jX).
  
  [Regression Potential]
  
   * Due to serialization the build times may increase for packages where the 
serialized steps ran in parallel originally. IMO there is not much we can do 
about that apart from trying to speed up the steps themselves.
   * Since no additional locks were introduced I believe the builds won't break 
or stall due to this change.
+  * The fix also skips optimizing PNGs and truncating changelogs of dbgsym 
files, but PNG files are typically not present there and 
/usr/share/doc/<pkg>-dbgsym is symlinked to /usr/share/doc/<pkg> even with the 
fix thus the change of pkgstripfiles does not have an effect on the built 
dbgsym files' changelogs.
+ 
  
  [Other Info]
  
   * There are some packages which need to be rebuilt with the updated
  pkgbinarymangler, collecting them is in progress.

** Description changed:

  [Impact]
  
   * PNG optimization and changelog truncation can happen in parallel with 
symlinking docs across packages. When checking for duplicates files the 
duplicate check may compare the processed files with non-processed ones and in 
that case they are found to be different despite the processed (or the 
unprocessed) files would be identical. The resulting binary packages would be 
still valid, but may be different for different architectures since the 
parallel build process may hit this race condition when processing different 
files making the arch:any packages not coinstallable on a multiarch-enabled 
system.
   * One manifestation of the problem can be seen in 
https://launchpadlibrarian.net/355140796/buildlog_ubuntu-bionic-i386.gpm_1.20.7-5_BUILDING.txt.gz
 where symlinking's file comparison occurs while truncating the changelog:
  ...
  Searching for duplicated docs in dependency libgpm2...
  pkgstripfiles: Truncating usr/share/doc/libgpm2/changelog.Debian.gz to 
topmost ten records
  
  gzip: 
/<<PKGBUILDDIR>>/debian/libgpm-dev/../libgpm2/usr/share/doc/libgpm2/changelog.Debian.gz:
 unexpected end of file
  cmp: EOF on /dev/fd/62 which is empty
  ...
  
   * The fix is protecting png optimization and trucating changelogs with
  the same lock as used to serialize doc symlinking thus those steps are
- serializes as well. The fix also skips optimizing PNGs and truncating
+ serialized as well. The fix also skips optimizing PNGs and truncating
  changelogs of dbgsym files in pkgstripfiles.
  
  [Test Case]
  
   * Build an affected package (like gpm) for i386 and amd64 with fixed 
pkgbinarymangler and observe the files in /usr/share/doc in the built packages 
to be identical and there should be no line like the following in the build log:
  gzip: 
/<<PKGBUILDDIR>>/debian/libgpm-dev/../libgpm2/usr/share/doc/libgpm2/changelog.Debian.gz:
 unexpected end of file
   * Note that due to the non-deterministic nature of the failure several 
builds could be necessary to reproduce the original problem and also for 
verifying that the problem is fixed. You can increase the chances of observing 
the failure by building the packages with higher level of parallelism (-jX).
  
  [Regression Potential]
  
   * Due to serialization the build times may increase for packages where the 
serialized steps ran in parallel originally. IMO there is not much we can do 
about that apart from trying to speed up the steps themselves.
   * Since no additional locks were introduced I believe the builds won't break 
or stall due to this change.
-  * The fix also skips optimizing PNGs and truncating changelogs of dbgsym 
files, but PNG files are typically not present there and 
/usr/share/doc/<pkg>-dbgsym is symlinked to /usr/share/doc/<pkg> even with the 
fix thus the change of pkgstripfiles does not have an effect on the built 
dbgsym files' changelogs.
- 
+  * The fix also skips optimizing PNGs and truncating changelogs of dbgsym 
files, but PNG files are typically not present there and 
/usr/share/doc/<pkg>-dbgsym is symlinked to /usr/share/doc/<pkg> even with the 
fix thus the change of pkgstripfiles does not have an effect on the built 
dbgsym files' changelogs.
  
  [Other Info]
  
   * There are some packages which need to be rebuilt with the updated
  pkgbinarymangler, collecting them is in progress.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1782094

Title:
  pkgstripfiles: symlinking docs and optimizing pngs/trucating
  changelogs  in parallel produces undeterministic results

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pkgbinarymangler/+bug/1782094/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to