[CRIU] [PATCH] pstree: workaround stupidity of modern compilers
Cyrill Gorcunov
gorcunov at gmail.com
Mon May 9 23:07:00 PDT 2016
On Tue, May 10, 2016 at 03:32:58AM +0300, Andrey Vagin wrote:
> From: Andrew Vagin <avagin at virtuozzo.com>
>
> gcc v6.0 and clang think that &next->pid.node can't be null.
>
> Here is an explanation from a kernel log (v3.12-5097-g1310a5a):
> """
> the result of this expression is not defined by a C standard
> and some gcc versions (e.g. 4.3.4) assume the above expression can never
> be equal to NULL. The net result is an oops because the iteration is not
> properly terminated.
> """
>
> $ gcc -v
> gcc version 6.0.0 20160406 (Red Hat 6.0.0-0.20) (GCC)
> $ python test/zdtm.py run -t zdtm/static/session00
> ...
> $ gdb -c /tmp/core.61 criu/criu
> Program terminated with signal SIGSEGV, Segmentation fault.
> 598 if (&next->pid.node == NULL || next->pid.virt > pid)
>
> $ make CC=clang
> pstree.c:598:18: error: comparison of address of 'next->pid.node' equal to a null pointer is always false [-Werror,-Wtautological-pointer-compare]
> if (&next->pid.node == NULL || next->pid.virt > pid)
>
> Signed-off-by: Andrew Vagin <avagin at virtuozzo.com>
Acked-by: Cyrill Gorcunov <gorcunov at openvz.org>
More information about the CRIU
mailing list