-
Notifications
You must be signed in to change notification settings - Fork 542
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
printf %a mishandles several edge cases on long doubles #15507
Comments
From @dcollinsnGreetings! Somewhere in the following stack of commits to blead: commit be93048 [rt.perl.org #128893]: printf %a botches 0 flag for negative values commit 75326c4 [rt.perl.org #128890]: printf %a rounds incorrectly commit a9ce335 [rt.perl.org #128889]: printf %a mishandles negative pseudo-precision (the fix for [rt.perl.org #128888] fixed also this one) commit 82229f9 [rt.perl.org #128888]: printf %a mishandles zero precision commit 520f3e5 Comment fix for b6d9b42 commit 94d0076 Add rt.perl.org reference for b6d9b42 I began encountering the following test failures: dcollins@nightshade64:~/toolchain/buildbot/master/workers/bot1/linux-debug-thread-ld/build$ ./perl -Ilib t/harness t/op/sprintf2.t Test Summary Report op/sprintf2.t (Wstat: 0 Tests: 1522 Failed: 34) Under this configuration: dcollins@nightshade64:~/toolchain/buildbot/master/workers/bot1/linux-debug-thread-ld/build$ ./perl -Ilib -V Characteristics of this binary (from libperl): I don't have a long doubles smoker that doesn't also build with -DDEBUGGING and -Dusethreads, but I suspect that a build with -Duselongdoubles is sufficient to trigger this. Full build log here: http://73.193.221.114:8010/#/builders/15/builds/42 -- |
From @dcollinsnIn fact, these test failures were added by several of those commits - they do not bisect cleanly. For example: 82229f9 is the first bad commit [rt.perl.org #128888]: printf %a mishandles zero precision :100644 100644 93e6364071013469fde22fc001170da29bff9cc9 ac41af27dfe9035a46244a1b6d15830aa8de2c9c M sv.c adds these: op/sprintf2.t .. 1/? # Failed test 1489 - at op/sprintf2.t line 807 Test Summary Report op/sprintf2.t (Wstat: 0 Tests: 1491 Failed: 3) But more failing tests are added over the next few commits. If I understand the original bugs correctly, I think the issue was fixed for normal builds, but your tests have uncovered that the same problem still exists for long doubles. -- |
From @dcollinsnI forgot to add: the following configure flags are sufficient to trigger this bug: ./Configure -Dusedevel -Dcc='ccache gcc-6' -Duselongdouble -des && make -j4 test_prep -- |
From [Unknown Contact. See original ticket]I forgot to add: the following configure flags are sufficient to trigger this bug: ./Configure -Dusedevel -Dcc='ccache gcc-6' -Duselongdouble -des && make -j4 test_prep -- |
From @jhi
Not quite. The failures you are seeing are caused by your long doubles (x86 80-bit) being scaled differently: perl -wle 'printf "%a\n", -1.5' # IEEE 754 64-bit In any system: perl -wle 'print -0x1.8p+0' I'll extend the block that limits the testing only for the expected systems, sorry about not |
The RT System itself - Status changed from 'new' to 'open' |
From @jkeenanOn Thu Aug 11 11:31:02 2016, dcollinsn@gmail.com wrote:
The -Dcc='ccache gcc-6' is not necessary, either. I triggered failures with simply '-des -Dusedevel -Duselongdouble'. See attachments. Thank you very much. |
From @jkeenan# Failed test 1440 - '%.6a' '3.14' -> '0xc.8f5c38p-2' cf '0xc.8f5c29p-2' at op/sprintf2.t line 690 Test Summary Report op/sprintf2.t (Wstat: 0 Tests: 1522 Failed: 35) |
From @jkeenanSummary of my perl5 (revision 5 version 25 subversion 4) configuration: Characteristics of this binary (from libperl): |
From @jhi
Duh. Got the comments the wrong way round. perl -wle 'printf "%a\n", -1.5' # x86 80-bit |
From zefram@fysh.orgJarkko Hietaniemi via RT wrote:
This different scaling is seen on any long-double build, consistently The tests failing is a bug. The tests obviously need to allow for the -zefram |
From @jhi
... consistent with how the said platforms' libcs do it. Not just glibc.
I disagree with your use of the word since this is a platform difference, |
From @jhihttp://perl5.git.perl.org/perl.git/commitdiff/9e67a8c1b21482ed5fada053dd462eb23320dc86 or thereabouts. |
From zefram@fysh.orgThis ticket was fixed the day it was raised, in commit -zefram |
@cpansprout - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#128899 (status was 'resolved')
Searchable as RT128899$
The text was updated successfully, but these errors were encountered: