New submission from Jesús Cea Avión <j...@jcea.es>:

When compiling on Solaris family, we define "_REENTRANT" in "Pyconfig.h".  That 
file is included when compiling C extensions, but if the extension is made of 
several C files, it could be included only in the file that interfaces with 
python runtime.

Unfortunately, "_REENTRANT" modifies the way C code is compiled, so compiling a 
C extension with some source files with "_REENTRANT" and some other without 
that "define" can produce bizarre errors and crashes.

One example: https://github.com/joyent/pkgsrc/issues/207

In particular, "include" order can make a big difference: 
https://github.com/jnwatson/py-lmdb/issues/213

I suggest that when "_REENTRANT" is defined in "Pyconfig.h", Python C 
extensions compilation machinery adds "-D_REENTRANT" to the compilation flags.

The patch is trivial.

----------
assignee: jcea
components: Build
messages: 353416
nosy: jcea
priority: high
severity: normal
status: open
title: If "_REENTARNT" is defined in the header file, we should use 
"-D_REENTRANT" when compiling
versions: Python 2.7, Python 3.5, Python 3.6, Python 3.7, Python 3.8, Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue38301>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to