[MDEV-7973] [PATCH] bigint fail with gcc 5.0 Created: 2015-04-10  Updated: 2018-09-21  Resolved: 2015-05-05

Status: Closed
Project: MariaDB Server
Component/s: OTHER
Affects Version/s: 10.0.17
Fix Version/s: 10.0.18

Type: Bug Priority: Major
Reporter: Honza Horak Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: upstream-fixed
Environment:

Fedora 22+


Attachments: File mariadb-gcc5.patch    

 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.



 Comments   
Comment by Honza Horak [ 2015-04-10 ]

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

Comment by Honza Horak [ 2015-04-10 ]

mysql's patch without whitespace changes.

Comment by Sergei Golubchik [ 2015-05-04 ]

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.

Generated at Thu Feb 08 07:23:41 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.