This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/55378] New: Inconsistant double 387 computation when using osthread


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55378

             Bug #: 55378
           Summary: Inconsistant double 387 computation when using
                    osthread
    Classification: Unclassified
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: philippe.coustaux@gmail.com


Created attachment 28723
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28723
Full testcase for win32 and cygwin

This program compute a bayes propability and accept one parameter with is used
to set up initial weights.

The proc ComputeBayes_p is called directly once from the main()
and once called within an os thread.
The same code is executed in both context.

The expected behavior is that the result of computation be the same in both
context.



The inconsistancy appears depending of the parameter, and of the optimisation
level
Some low weights bits vary.

for low values of the parameter (15) the problem doesn't occurs with low
optimization.
for higher values (30) the problem appears even with -O0 and -g optimization
level



There is 2 subdirectory.
one named cyg for unix compilation, one named win for windows.

The "build" compile the program with different optimisation levels
the "test" script run the compiled binaries
the "run-test" use the test script with 2 parameter value.

The output of the program provide the diag:
>>>>>>>>>> Global result <<<<<<<<<<<
./U3 15 >>         ** Thread bug.**.
============= Details ==============
Difference Dec/Hex (Without / With):
5.421010862427522e-20 / 0X1.0000000000000000P-64

The line with the diag is a copy of the arg line and using the conventions used
by the build script, indicate the optimization level. (hehe -O3)

the last line is the delta between computation without thread and the
computation with thread


I have conducted the tests on winxp and seven on two intel processors, amd
seems to have same behavior
It's reproducible with mingw and with cygwin.
The problem doesn't appears with sse math
and tests on a true debian linux doesn't exibit the problem.

To reproduce the problem, use a windows console or a cygwin terminal
Go in the adequate directory
run the build script to compile the test,
launch the run-test script to produce the RUN-LOG-?? files that trace the
problem.



The problem seems similar to:
http://sourceforge.net/tracker/?func=detail&atid=102435&aid=3409958&group_id=2435


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]