[MDEV-21248] Test main.execution_constants fails with memory exhausted near Created: 2019-12-08 Updated: 2020-02-08 Resolved: 2020-02-08 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Server |
| Affects Version/s: | 10.5 |
| Fix Version/s: | 10.5.1 |
| Type: | Bug | Priority: | Major |
| Reporter: | Martin Liška | Assignee: | Anel Husakovic |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | contribution | ||
| Attachments: |
|
| Description |
|
After update to latest GCC 10, I see the aforementioned test failing. I use -flto that enables cross module inlining and I investigated that stack overflow detection does not work in `check_stack_overrun` function in sql_parse.cc. It's very likely caused by optimized out the allocation of buf argument of the function, which is a stack variable in a caller frame.
|
| Comments |
| Comment by Eugene Kosov (Inactive) [ 2019-12-08 ] |
|
Hi Martin! Thank you for your patch. Actually, we receive patches via Github Pull Requests: https://github.com/mariadb/server/pulls/ As for the patch itself, well. When I tried gcc 9.2 with -flto A LOT of tests failed. MariaDB doesn't not work for me with LTO. Nobody uses it. I've tried clang with -flto=thin and that worked for me. Please, share your experience with LTO. Did it work for you on gcc 9? Do you use MariaDB + LTO in production? |
| Comment by Martin Liška [ 2019-12-08 ] |
|
Hello Eugene.
Sure, I've just made a pull request: https://github.com/MariaDB/server/pull/1424
We as openSUSE (in openSUSE Tumbleweed) switched to usage of LTO with GCC by default some time ago. Build and test-suite works for me fine with GCC 9.
As mentioned, it works and all openSUSE TW users are now using mariadb with LTO. I can attach our build log, you may |
| Comment by Sergei Golubchik [ 2020-01-01 ] |
|
I don't like that fix much, it's trying to outsmart the compiler. I'd rather tell the compiler directly what we want, if that's possible. Would __attribute__((noinline)) help here? Or noclone or noipa? Or __attribute__((noinline,noclone,noipa)) ? |
| Comment by Martin Liška [ 2020-01-02 ] |
|
Well, one can definitely use -O0 pragma for the problematic function. On the other hand, I'm not |
| Comment by Martin Liška [ 2020-01-09 ] |
|
Is there a consensus that using -O0 will be accepted in a pull request? |
| Comment by Martin Liška [ 2020-01-20 ] |
|
May I please ping the issue? |
| Comment by Sergei Golubchik [ 2020-01-21 ] |
|
Yes, I think both attributes and pragma could be accepted as a solution. Both are a way to tell the compiler what it should not optimize, both aren't portable, but it's ok, as the optimization issue is compiler specific anyway, so a compiler specific fix is fine here. |
| Comment by Martin Liška [ 2020-01-22 ] |
|
Good, I've just rebased the corresponding github PR. |
| Comment by Sergei Golubchik [ 2020-02-05 ] |
|
the last (https://github.com/MariaDB/server/pull/1424/commits/c1584b72097c385d2cb59d4e27c958168f78e0e6) commit looks ok, could you, please, push it? |