Yesterday we upgraded from 5.7.29-0ubuntu0.18.04.1 to 5.7.30-0ubuntu0.18.04.1 (via unattended-upgrade) on Ubuntu 18.04 and slurmdbd (https://packages.ubuntu.com/bionic/admin/slurmdbd) started segfaulting.
Upon inspection, the slurmdbd crash is caused by a change of behaviour of the SQL CONCAT function. The new behaviour seems wrong.
Calling
SELECT CONCAT('');
will result in an empty string as expected however if the result is assigned to a variable with:
SET @var = ""; SELECT @var := CONCAT('');
the variable will be NULL instead of an empty string.
It seems that when the output of CONCAT is assigned to a variable; if CONCAT should have returned an empty string, it will set the variable to NULL instead.
SLURM itself crashes because it uses a stored procedure which relies on the output of CONCAT to be an empty string rather than a NULL variable and tries to dereference the pointer.
I wasn’t able to get hold of 5.7.29-0ubuntu0.18.04.1 via APT so I tested on 5.7.21-1ubuntu1. On 5.7.21, the variable was correctly set to an empty string. I have also tried on 20.04 and the behaviour is correct as well. So the problem seems to be present only in the version 5.7.30-0ubuntu0.18.04.1.
This bug is a bit annoying because it makes SLURM with accounting enabled completely unusable. However downgrading MySQL to 5.7.29-0ubuntu0.18.04.1 temporarily fixed the problem.
I have attached a log file with examples to reproduce the bug.
Hi,
Yesterday we upgraded from 5.7.29- 0ubuntu0. 18.04.1 to 5.7.30- 0ubuntu0. 18.04.1 (via unattended-upgrade) on Ubuntu 18.04 and slurmdbd (https:/ /packages. ubuntu. com/bionic/ admin/slurmdbd) started segfaulting.
Upon inspection, the slurmdbd crash is caused by a change of behaviour of the SQL CONCAT function. The new behaviour seems wrong.
Calling
SELECT CONCAT('');
will result in an empty string as expected however if the result is assigned to a variable with:
SET @var = ""; SELECT @var := CONCAT('');
the variable will be NULL instead of an empty string.
It seems that when the output of CONCAT is assigned to a variable; if CONCAT should have returned an empty string, it will set the variable to NULL instead.
SLURM itself crashes because it uses a stored procedure which relies on the output of CONCAT to be an empty string rather than a NULL variable and tries to dereference the pointer.
I wasn’t able to get hold of 5.7.29- 0ubuntu0. 18.04.1 via APT so I tested on 5.7.21-1ubuntu1. On 5.7.21, the variable was correctly set to an empty string. I have also tried on 20.04 and the behaviour is correct as well. So the problem seems to be present only in the version 5.7.30- 0ubuntu0. 18.04.1.
I think that the behaviour was introduced in the 5.7 branch by this commit: /github. com/mysql/ mysql-server/ commit/ addb2aab601d98e 685eccae545f79d 120561ad9b
https:/
but I am not entirely sure.
This bug is a bit annoying because it makes SLURM with accounting enabled completely unusable. However downgrading MySQL to 5.7.29- 0ubuntu0. 18.04.1 temporarily fixed the problem.
I have attached a log file with examples to reproduce the bug.
Thank you very much.