New submission from Simon McVittie:
dbus-python has a regression test for
https://bugs.freedesktop.org/show_bug.cgi?id=23831 which repeatedly initializes
the interpreter, imports dbus and finalizes the interpreter. This test passes
in Python up to 3.5, but is failing under Python 3.6 nightly builds on
Travis-CI, and in Python 3.6.0a3 (package version 3.6.0~a3-1) on Debian.
I've been able to reproduce the crash without anything specific to dbus with
this C code:
#include
#include
int main(void)
{
int i;
puts("1..1");
for (i = 0; i < 100; ++i) {
Py_Initialize();
if (PyRun_SimpleString("\n") != 0) {
puts("not ok 1 - there was an exception");
return 1;
}
Py_Finalize();
}
puts("ok 1 - was able to loop 100 times");
return 0;
}
It appears the crash is reliably in the 10th repeat:
Program received signal SIGSEGV, Segmentation fault.
0x7783a4bb in type_dealloc (type=0x77d8ad80 )
at ../Objects/typeobject.c:3032
3032../Objects/typeobject.c: No such file or directory.
(gdb) bt
#0 0x7783a4bb in type_dealloc (type=0x77d8ad80 )
at ../Objects/typeobject.c:3032
#1 0x77817a1b in insertdict (value=, hash=,
key=, mp=) at ../Objects/dictobject.c:806
#2 PyDict_SetItem (
op=op@entry={'open': None, 'O_DIRECT': None, 'chdir': None, 'O_ACCMODE':
None, '__package__': None, 'WCOREDUMP': None, 'setgroups': None, 'O_CREAT':
None, 'O_CLOEXEC': None, 'chown': None, 'sched_getscheduler': None,
'RTLD_NODELETE': None, 'terminal_size': None, 'EX_IOERR': None,
'sched_setaffinity': None, 'XATTR_SIZE_MAX': None, 'fstat': None,
'sched_rr_get_interval': None, 'O_LARGEFILE': None, 'times_result': None,
'get_inheritable': None, 'WIFEXITED': None, 'ST_NODEV': None, 'forkpty': None,
'ctermid': None, 'O_RSYNC': None, 'SCHED_FIFO': None, 'stat': None, 'replace':
None, 'EX_NOINPUT': None, 'WUNTRACED': None, 'set_blocking': None,
'_have_functions': None, 'unsetenv': None, 'setresgid': None, 'fchown': None,
'getgrouplist': None, 'openpty': None, 'lockf': None, 'chroot': None, 'readv':
None, 'EX_NOHOST': None, 'error': None, 'WEXITSTATUS': None, 'WIFSIGNALED':
None, 'WNOHANG': None, 'POSIX_FADV_WILLNEED': None, 'SEEK_HOLE': None, 'dup':
None, 'POSIX_FADV_NOREUSE': None, 'ki
ll': None, 'statvfs_result': None, 'WIFCON...(truncated),
key='DirEntry', value=value@entry=None) at ../Objects/dictobject.c:1228
#3 0x7782659c in _PyModule_ClearDict (
d={'open': None, 'O_DIRECT': None, 'chdir': None, 'O_ACCMODE': None,
'__package__': None, 'WCOREDUMP': None, 'setgroups': None, 'O_CREAT': None,
'O_CLOEXEC': None, 'chown': None, 'sched_getscheduler': None, 'RTLD_NODELETE':
None, 'terminal_size': None, 'EX_IOERR': None, 'sched_setaffinity': None,
'XATTR_SIZE_MAX': None, 'fstat': None, 'sched_rr_get_interval': None,
'O_LARGEFILE': None, 'times_result': None, 'get_inheritable': None,
'WIFEXITED': None, 'ST_NODEV': None, 'forkpty': None, 'ctermid': None,
'O_RSYNC': None, 'SCHED_FIFO': None, 'stat': None, 'replace': None,
'EX_NOINPUT': None, 'WUNTRACED': None, 'set_blocking': None, '_have_functions':
None, 'unsetenv': None, 'setresgid': None, 'fchown': None, 'getgrouplist':
None, 'openpty': None, 'lockf': None, 'chroot': None, 'readv': None,
'EX_NOHOST': None, 'error': None, 'WEXITSTATUS': None, 'WIFSIGNALED': None,
'WNOHANG': None, 'POSIX_FADV_WILLNEED': None, 'SEEK_HOLE': None, 'dup': None,
'POSIX_FADV_NOREUSE': None, 'kill': None,
'statvfs_result': None, 'WIFCON...(truncated))
at ../Objects/moduleobject.c:593
#4 0x7782672e in _PyModule_Clear (m=m@entry=)
at ../Objects/moduleobject.c:544
#5 0x778d5874 in PyImport_Cleanup () at ../Python/import.c:452
#6 0x778e3a38 in Py_FinalizeEx () at ../Python/pylifecycle.c:588
#7 0x00400795 in main () at
/home/smcv/src/dbus-python/test/import-repeatedly.c:19
(gdb) frame 7
#7 0x00400795 in main () at
/home/smcv/src/dbus-python/test/import-repeatedly.c:19
19 Py_Finalize();
(gdb) p i
$1 = 10
--
components: Interpreter Core
messages: 272423
nosy: smcv
priority: normal
severity: normal
status: open
title: repeated Py_Initialize/PyRun_SimpleString/Py_Finalize segfaults
type: crash
versions: Python 3.6
___
Python tracker
<http://bugs.python.org/issue27736>
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com