Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.0.17
    • Fix Version/s: 10.0.18
    • Component/s: OTHER
    • Labels:
    • Environment:
      Fedora 22+

      Description

      Originally spotted with mysql-5.6.24 (http://bugs.mysql.com/bug.php?id=76654), but mariadb 10.0.17 seems to have the same issue:

      Description:
      When building mysql-5.6.24 with gcc 5.0 on Fedora 22 or later some tests fail on big integers operations, for example bigint test case.

      Full build log is available here:
      https://kojipkgs.fedoraproject.org//work/tasks/3420/9443420/build.log

      How to repeat:
      Run bigint test or a small reproducer:

        MySQL [(none)]> select -(-9223372036854775808);
        +-------------------------+
        | -(-9223372036854775808) |
        +-------------------------+
        |               854775808 |
        +-------------------------+
      

      Which is obviously wrong.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              Hide
              hhorak Honza Horak added a comment -

              See the mysql bug report, which contains a patch (not tested with mariadb yet though).

              Show
              hhorak Honza Horak added a comment - See the mysql bug report, which contains a patch (not tested with mariadb yet though).
              Hide
              hhorak Honza Horak added a comment -

              mysql's patch without whitespace changes.

              Show
              hhorak Honza Horak added a comment - mysql's patch without whitespace changes.
              Hide
              serg Sergei Golubchik added a comment -

              I don't like this fix, it's a hack that converts the loop to an equivalent loop that magically works in gcc 5. It does not fix the root of the bug (undefined behavior) but simply changes the following code to work with how gcc 5.0 happens to behave in this undefined case. If gcc 6 will start doing something different here, it will break again.

              I will directly fix the undefined behavior instead.

              Show
              serg Sergei Golubchik added a comment - I don't like this fix, it's a hack that converts the loop to an equivalent loop that magically works in gcc 5. It does not fix the root of the bug (undefined behavior) but simply changes the following code to work with how gcc 5.0 happens to behave in this undefined case. If gcc 6 will start doing something different here, it will break again. I will directly fix the undefined behavior instead.

                People

                • Assignee:
                  serg Sergei Golubchik
                  Reporter:
                  hhorak Honza Horak
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:

                    Time Tracking

                    Estimated:
                    Original Estimate - Not Specified
                    Not Specified
                    Remaining:
                    Remaining Estimate - 0 minutes
                    0m
                    Logged:
                    Time Spent - 1 hour
                    1h