Bug 1473425 - gcc7 throws error on pymem.h (python2-devel) macros
Summary: gcc7 throws error on pymem.h (python2-devel) macros
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: python2
Version: 27
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Petr Viktorin (pviktori)
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-07-20 19:21 UTC by Gabriel Somlo
Modified: 2018-03-06 17:29 UTC (History)
10 users (show)

Fixed In Version: python2-2.7.14-8.fc27
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-03-06 17:29:59 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
fixes gcc7 compiler warning (825 bytes, patch)
2017-07-20 19:21 UTC, Gabriel Somlo
no flags Details | Diff
file on which warning emitted with -Wall (3.11 KB, text/x-csrc)
2017-07-21 18:24 UTC, Gabriel Somlo
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Python 31474 0 None None None 2018-02-22 15:34:41 UTC

Description Gabriel Somlo 2017-07-20 19:21:18 UTC
Created attachment 1301969 [details]
fixes gcc7 compiler warning

Description of problem:
compiling C programs which use PyMem_MALLOC in pymem.h throws [-Werror=int-in-bool-context] warning/error

Version-Release number of selected component (if applicable):
python2-2.7.13-12 (python2-devel-2.7.13-12)

How reproducible:
compile any C program using PyMem_MALLOC or PyMem_REALLOC macros


Actual results:
...
In file included from /usr/include/python2.7/Python.h:78:0,
                 from netnsmodule.c:16:
netnsmodule.c: In function 'netns_nsexecvp':
/usr/include/python2.7/pymem.h:97:30: error: '*' in boolean context, suggest '&&' instead [-Werror=int-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
/usr/include/python2.7/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
netnsmodule.c:61:10: note: in expansion of macro 'PyMem_NEW'
   argv = PyMem_NEW(char *, argc + 1);
          ^~~~~~~~~
cc1: all warnings being treated as errors
error: command 'gcc' failed with exit status 1
...

Expected results:
program (srpm) builds successfully

Additional info:
Proposed patch attached, makes gcc7 happy again!

If this sounds reasonable, please also push upstream -- thanks!

Comment 1 Charalampos Stratakis 2017-07-21 09:16:03 UTC
Could you provide a minimal example of a program to compile with those macros?

Also this certainly looks like a good candidate for an upstream pull request.

Comment 2 Gabriel Somlo 2017-07-21 18:24:26 UTC
Created attachment 1302514 [details]
file on which warning emitted with -Wall

compile with "gcc -Wall -I/usr/include/python2.7 -c netnsmodule.c"

On F26, this emits the warning described earlier.

The file is part of the CORE network simulator (https://github.com/coreemu/core). I'm trying to build it as an RPM package using mock, a process that results in "-Wall -Werror" being specified on the gcc command line, which makes the rpm build process fail.

Comment 3 Charalampos Stratakis 2017-07-24 11:17:25 UTC
So this is due to the new warning [0] with gcc 7:

-Wint-in-bool-context warns about suspicious uses of integer values where boolean values are expected. This warning is enabled by -Wall.

[0] https://gcc.gnu.org/gcc-7/changes.html

This should be addressed upstream first preferably. Would be you be able to open a new issue at http://bugs.python.org/ ? Maybe sent a pull request?

I can guide you through the procedures if required or I can take over at any step you'd prefer.

Comment 4 Gabriel Somlo 2017-07-24 14:39:32 UTC
http://bugs.python.org/issue31013

Comment 5 Jan Kurik 2017-08-15 07:15:22 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 27 development cycle.
Changing version to '27'.

Comment 6 Igal 2017-08-18 16:40:42 UTC
I'm getting the same error when trying to compile CORE Network Emulator (https://github.com/coreemu/core) with gcc7 on Fedora 26:

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O3 -Werror -Wall -D_GNU_SOURCE -fPIC -I/usr/include/python2.7 -c netnsmodule.c -o build/temp.linux-x86_64-2.7/netnsmodule.o
In file included from /usr/include/python2.7/Python.h:78:0,
                 from netnsmodule.c:16:
netnsmodule.c: In function ‘netns_nsexecvp’:
/usr/include/python2.7/pymem.h:97:30: error: ‘*’ in boolean context, suggest ‘&&’ instead [-Werror=int-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
/usr/include/python2.7/pymem.h:75:15: note: in definition of macro ‘PyMem_MALLOC’
     : malloc((n) ? (n) : 1))
               ^
netnsmodule.c:61:10: note: in expansion of macro ‘PyMem_NEW’
   argv = PyMem_NEW(char *, argc + 1);
          ^~~~~~~~~
cc1: all warnings being treated as errors
error: command 'gcc' failed with exit status 1
make[3]: *** [Makefile:695: libnetns.a] Error 1
make[3]: Leaving directory '/home/user/Downloads/core/daemon/src'
make[2]: *** [Makefile:637: all-recursive] Error 1
make[2]: Leaving directory '/home/user/Downloads/core/daemon'
make[1]: *** [Makefile:459: all-recursive] Error 1
make[1]: Leaving directory '/home/user/Downloads/core'
make: *** [Makefile:387: all] Error 2

Comment 7 Petr Viktorin (pviktori) 2018-02-22 15:37:32 UTC
Solved in https://github.com/python/cpython/pull/3581 and should be part of Python 2.7.15
I'll prepare a backport for Fedora.

Comment 8 Fedora Update System 2018-02-28 10:12:56 UTC
python2-2.7.14-8.fc27 has been submitted as an update to Fedora 27. https://bodhi.fedoraproject.org/updates/FEDORA-2018-76e9d22b5c

Comment 9 Petr Viktorin (pviktori) 2018-02-28 10:14:08 UTC
Fixed in Rawhide and Fedora 28. For f27, please test and add karma :)
https://bodhi.fedoraproject.org/updates/FEDORA-2018-76e9d22b5c

Comment 10 Fedora Update System 2018-02-28 18:09:41 UTC
python2-2.7.14-8.fc27 has been pushed to the Fedora 27 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-76e9d22b5c

Comment 11 Fedora Update System 2018-03-06 17:29:59 UTC
python2-2.7.14-8.fc27 has been pushed to the Fedora 27 stable repository. If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.