all devices regression report - 2017-11-20-08:10:34 - 1b64014143a8a571e5dbff3346c6ad902603dda1
| Newsgroups | gmane.comp.printing.ghostscript.regression |
|---|---|
| Message-ID | <20171120161035.1399C2040238@i7> |
Differences in all devices errors using gs/examples files Previous Revision: cea5d8a72dab953fe84ab8f7280003d377559fff Current Revision: 1b64014143a8a571e5dbff3346c6ad902603dda1 commit 1b64014143a8a571e5dbff3346c6ad902603dda1 Author: Robin Watts <[email protected]> AuthorDate: Mon Nov 20 14:33:03 2017 +0000 CommitDate: Mon Nov 20 14:38:01 2017 +0000 Fix release/debug difference. In searching for the indeterminism in 11-14.PS, I found that I could run the same command line in release and debug builds on peeved, and get different results: touch out1.pgm ref1.pgm && rm out*.pgm ref*.pgm && bin/gs -sOutputFile=ref%d.pgm -dMaxBitmap=10000 -sDEVICE=pgmraw -r300 -Z: -sDEFAULTPAPERSIZE=letter -dNOPAUSE -dBATCH -K2000000 -dClusterJob -dJOBSERVER %rom%Resource/Init/gs_cet.ps cutdown >& ~/log && debugbin/gs -sOutputFile=out%d.pgm -dMaxBitmap=10000 -sDEVICE=pgmraw -r300 -Z: -sDEFAULTPAPERSIZE=letter -dNOPAUSE -dBATCH -K2000000 -dClusterJob -dJOBSERVER %rom%Resource/Init/gs_cet.ps cutdown >& ~/log2 && md5sum ref*.pgm out*.pgm && less ~/log ~/log2 After cutting down the file as much as I could, Chris reduced it simply to: 3E9 3E9 moveto 1 1 lineto stroke showpage Thanks for this! Tracing through the code, I discovered that the difference came down to check_diff_overflow, where the release build was assuming that if v1 > v0, v0 - v1 < 0, which is acceptable because v0 - v1 has overflown, at which point C says the value is unpredictable. The fix is to detect the overflow before it happens. base/gxpflat.c new errors: errors that went away: errors that are not whitelisted: === ghostpdl/examples/transparency_example.ps === cp50 === === ghostpdl/examples/transparency_example.ps === psdrgb ===