[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