all devices regression report - 2017-11-22-11:41:41 - dd35e58feccf543129bc108857b16fd43d627d02
| Newsgroups | gmane.comp.printing.ghostscript.regression |
|---|---|
| Message-ID | <20171122194142.106E720401C5@i7> |
Differences in all devices errors using gs/examples files Previous Revision: 362ec9daadb9992b0def3520cd1dc6fa52edd1c4 Current Revision: dd35e58feccf543129bc108857b16fd43d627d02 commit dd35e58feccf543129bc108857b16fd43d627d02 Author: Robin Watts <[email protected]> AuthorDate: Wed Nov 22 18:02:26 2017 +0000 CommitDate: Wed Nov 22 18:09:43 2017 +0000 Fix indeterminism caused by buffer overrun in thresholding. Running: gs -sOutputFile=out%d.pbm -dMaxBitmap=400000000 -sDEVICE=pbmraw -r300 -sDEFAULTPAPERSIZE=letter -dNOPAUSE -dBATCH -K2000000 -dClusterJob -dJOBSERVER /home/marcos/cluster/tests_private/pdf/uploads/Bug698519.pdf then catting out{1,2,3,4,5}.pbm together and md5summing it gives a different result to running the above job direct to out.pbm. After much nightmarish debugging, it transpires that this is because the special case in the SSE thresholding code that spots the 200% scale case is being triggered incorrectly. The image is 1753 pixels wide, which would be 3506 pixels at 200%. We actually display it at 3507 pixels. The code was triggering the 200% case by calculating a scale_factor value of fixed_half (128). The rounding here was causing a false positive. Instead, we skip the calculation and check by directly comparing source and dest sizes. base/gxicolor.c base/gximono.c new errors: errors that went away: errors that are not whitelisted: === ghostpdl/examples/transparency_example.ps === cp50 === === ghostpdl/examples/transparency_example.ps === psdrgb ===