The bug (https://bugzilla.redhat.com/show_bug.cgi?id=1465735) is caused by behavior difference between bash and sh (bash in posix). In the function single_instance_lock in kdumpctl script, there is
exec 9>/var/lock/kdump
which will fail in user mode. However, this fail will cause script exit under bash and non-exit under sh, causing infinite loop because the flock will always fail.
According to the 16th item in ftp://ftp.gnu.org/old-gnu/Manuals/bash-2.02/html_node/bashref_66.html
If a POSIX.2 special builtin returns an error status, a non- interactive shell exits.
And according to https://www.gnu.org/software/bash/manual/html_node/Special-Builtins.html
exec is one of the POSIX.2 special builtin's.
This patch fixes the bug by checking exec return value.
Signed-off-by: Ziyue Yang ziyang@redhat.com --- kdumpctl | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/kdumpctl b/kdumpctl index e440bbb..a517925 100755 --- a/kdumpctl +++ b/kdumpctl @@ -37,6 +37,10 @@ single_instance_lock() local rc timeout=5
exec 9>/var/lock/kdump + if [ $? -ne 0 ]; then + echo "Creating file lock failed" + exit 1 + fi
flock -n 9 rc=$?
Hi Ziyue On 07/03/17 at 04:08pm, Ziyue Yang wrote:
The bug (https://bugzilla.redhat.com/show_bug.cgi?id=1465735)
Can you describe the bug in patch log for example copy the errors here? We do not need to click the link to get what happened although adding the link as a reference is good.
is caused by behavior difference between bash and sh (bash in posix). In the function single_instance_lock in kdumpctl script, there is
exec 9>/var/lock/kdump
which will fail in user mode. However, this fail will cause script exit under bash and non-exit under sh, causing infinite
exit under sh, non-exit under bash?
loop because the flock will always fail.
According to the 16th item in ftp://ftp.gnu.org/old-gnu/Manuals/bash-2.02/html_node/bashref_66.html
If a POSIX.2 special builtin returns an error status, a non- interactive shell exits.
And according to https://www.gnu.org/software/bash/manual/html_node/Special-Builtins.html
exec is one of the POSIX.2 special builtin's.
This patch fixes the bug by checking exec return value.
Signed-off-by: Ziyue Yang ziyang@redhat.com
kdumpctl | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/kdumpctl b/kdumpctl index e440bbb..a517925 100755 --- a/kdumpctl +++ b/kdumpctl @@ -37,6 +37,10 @@ single_instance_lock() local rc timeout=5
exec 9>/var/lock/kdump
if [ $? -ne 0 ]; then
echo "Creating file lock failed"
exit 1
fi
flock -n 9 rc=$?
-- 2.9.3 _______________________________________________ kexec mailing list -- kexec@lists.fedoraproject.org To unsubscribe send an email to kexec-leave@lists.fedoraproject.org
Hi Dave,
On Mon, Jul 3, 2017 at 4:52 PM, Dave Young dyoung@redhat.com wrote:
Hi Ziyue On 07/03/17 at 04:08pm, Ziyue Yang wrote:
The bug (https://bugzilla.redhat.com/show_bug.cgi?id=1465735)
Can you describe the bug in patch log for example copy the errors here? We do not need to click the link to get what happened although adding the link as a reference is good.
Sure, I've sent a v2 patch.
is caused by behavior difference between bash and sh (bash in posix). In the function single_instance_lock in kdumpctl script, there is
exec 9>/var/lock/kdump
which will fail in user mode. However, this fail will cause script exit under bash and non-exit under sh, causing infinite
exit under sh, non-exit under bash?
Once exec fail, the sh will exit immediately, while bash will continue to execute rest commands.
loop because the flock will always fail.
According to the 16th item in ftp://ftp.gnu.org/old-gnu/Manuals/bash-2.02/html_node/bashref_66.html
If a POSIX.2 special builtin returns an error status, a non- interactive shell exits.
And according to https://www.gnu.org/software/bash/manual/html_node/Special-Builtins.html
exec is one of the POSIX.2 special builtin's.
This patch fixes the bug by checking exec return value.
Signed-off-by: Ziyue Yang ziyang@redhat.com
kdumpctl | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/kdumpctl b/kdumpctl index e440bbb..a517925 100755 --- a/kdumpctl +++ b/kdumpctl @@ -37,6 +37,10 @@ single_instance_lock() local rc timeout=5
exec 9>/var/lock/kdump
if [ $? -ne 0 ]; then
echo "Creating file lock failed"
exit 1
fi flock -n 9 rc=$?
-- 2.9.3 _______________________________________________ kexec mailing list -- kexec@lists.fedoraproject.org To unsubscribe send an email to kexec-leave@lists.fedoraproject.org