Issue 34223: PYTHONDUMPREFS=1 ./python -c pass does crash (original) (raw)

It seems like Python has an invalid object somewhere. PYTHONDUMPREFS=1 makes Python crash at exit.

$ PYTHONDUMPREFS=1 ./python -c pass (...) 0x7f1992292448 [1] (<class '_thread._localdummy'>, <class 'object'>) 0x7f1992241aa8 [1] {'doc': 'Thread-local dummy'} 0x7f199222c740 [1] (<class 'object'>,) 0x9c98a0 [2] <class '_thread._localdummy'> 0x7f1992217dc0 [1] Segmentation fault (core dumped)

Can reproduce this on Python 3.5 and 3.6 too

Python 3.5

➜ cpython git:(f497e74) $ ./python Python 3.5.6rc1+ (remotes/upstream/3.5:f497e74, Jul 25 2018, 14:32:33) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information.

➜ cpython git:(f497e74) $ PYTHONDUMPREFS=1 ./python -c pass (...) 0x7f9bac534478 [1] 'Thread-local data' 0x7f9bac538d78 [1] (<class '_thread._local'>, <class 'object'>) 0x7f9bac5343a0 [1] <built-in method __new__ of type object at 0x8b1a00> 0x7f9bac53d358 [1] <slot wrapper '__delattr__' of '_thread._local' objects> 0x7f9bac53d2d8 [1] <slot wrapper '__setattr__' of '_thread._local' objects> 0x7f9bac53d258 [1] <slot wrapper '__getattribute__' of '_thread._local' objects> 0x7f9bac541288 [1] {'getattribute': <slot wrapper '__getattribute__' of '_thread._local' objects>, 'delattr': <slot wrapper '__delattr__' of '_thread._local' objects>, 'new': <built-in method __new__ of type object at 0x8b1a00>, 'setattr': <slot wrapper '__setattr__' of '_thread._local' objects>, 'doc': 'Thread-local data'} 0x7f9bac53b398 [1] (<class 'object'>,) 0x8b1a00 [6] <class '_thread._local'> 0x7f9bac53d1d8 [1] <weakref at 0x7f9bac53d1d8; to 'type' at 0x8b1ba0 (_localdummy)> 0x7f9bac537270 [1] 9116576 0x7f9bac534400 [1] 'Thread-local dummy' 0x7f9bac538c28 [1] (<class '_thread._localdummy'>, <class 'object'>) 0x7f9bac541218 [1] {'doc': 'Thread-local dummy'} 0x7f9bac53b330 [1] (<class 'object'>,) 0x8b1ba0 [2] <class '_thread._localdummy'> 0x7f9bac598ef8 [1] [1] 15208 segmentation fault (core dumped) PYTHONDUMPREFS=1 ./python -c pass

Python 3.6

cpython git:(a096cc6) $ ./python Python 3.6.6+ (remotes/upstream/3.6:a096cc6, Jul 25 2018, 14:28:43) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information.

➜ cpython git:(a096cc6) $ PYTHONDUMPREFS=1 ./python -c pass 0x7fab5a968758 [1] <weakref at 0x7fab5a968758; to 'type' at 0x8b7f60 (_localdummy)> 0x7fab5a965310 [1] 9142112 0x7fab5a962568 [1] 'Thread-local dummy' 0x7fab5a960c28 [1] (<class '_thread._localdummy'>, <class 'object'>) 0x7fab5a962508 [1] {'doc': 'Thread-local dummy'} 0x7fab5a95f128 [1] (<class 'object'>,) 0x8b7f60 [2] <class '_thread._localdummy'> 0x7fab5a9622b0 [1] {'name': None, 'doc': None, 'package': None, 'loader': None, 'spec': None, 'warn': None, 'warn_explicit': None, '_filters_mutated': None, 'filters': None, '_onceregistry': None, '_defaultaction': None} 0x7fab5a9686d8 [1] 0x7fab5a966740 [1] '_warnings' 0x7fab5a9497a8 [1] [1] 2975 segmentation fault (core dumped) PYTHONDUMPREFS=1 ./python -c pass

Thanks

Python 3.4 seems fine

➜ cpython git:(57b85d3) ./python Python 3.4.9rc1+ (default, Jul 25 2018, 14:39:07) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information.

➜ cpython git:(57b85d3) time PYTHONDUMPREFS=1 ./python -c pass (...) 0x7fbe97f52110 [57] str 0x7fbe97f520a8 [57] str 0x7fbe97f52040 [39] str 0x7fbe97f50350 [23] str 0x7fbe97f502e0 [48] str 0x7fbe97f50270 [143] str 0x7fbe97f50200 [24] str 0x7fbe97f50190 [24] str 0x7fbe97f50120 [8] str 0x7fbe97f500c8 [1] dict 0x7fbe97f51040 [138] str 0x7fbe97f50058 [1] dict 0x7fbe97f4f058 [154] tuple 0x86c6e0 [381] type 0x86cb00 [31] type PYTHONDUMPREFS=1 ./python -c pass 0.08s user 0.08s system 45% cpu 0.342 total

Thanks

Seems like this is the same as https://bugs.python.org/issue30156.

Relevant commit : https://github.com/python/cpython/commit/7822f151b68e40376af657d267ff774439d9adb9 . Comment on the commit : https://github.com/python/cpython/commit/7822f151b68e40376af657d267ff774439d9adb9#commitcomment-21880815

Python 3.5.1 works fine but Python 3.5.2rc1 will crash.

Python 3.5.2rc1 crash

$ git checkout v3.5.2rc1 && git clean -xdf && time ./configure --with-pydebug && make -s -j4 && PYTHONDUMPREFS=1 ./python -c pass (...) 0x7f8915f0b258 [1] <slot wrapper '__getattribute__' of '_thread._local' objects> 0x7f8915f0d3d8 [1] {'setattr': <slot wrapper '__setattr__' of '_thread._local' objects>, 'doc': 'Thread-local data', 'delattr': <slot wrapper '__delattr__' of '_thread._local' objects>, 'getattribute': <slot wrapper '__getattribute__' of '_thread._local' objects>, 'new': <built-in method __new__ of type object at 0x8ad8e0>} 0x7f8915f09260 [1] (<class 'object'>,) 0x8ad8e0 [6] <class '_thread._local'> 0x7f8915f0b1d8 [1] <weakref at 0x7f8915f0b1d8; to 'type' at 0x8ada80 (_localdummy)> 0x7f8915f05270 [1] 9099904 0x7f8915f00298 [1] 'Thread-local dummy' 0x7f8915f06d78 [1] (<class '_thread._localdummy'>, <class 'object'>) 0x7f8915f0d368 [1] {'doc': 'Thread-local dummy'} 0x7f8915f091f8 [1] (<class 'object'>,) 0x8ada80 [2] <class '_thread._localdummy'> 0x7f8915f0d218 [1] {'_filters_mutated': None, 'warn': None, 'warn_explicit': None, 'spec': None, '_defaultaction': None, 'loader': None, 'filters': None, 'package': None, 'doc': None, '_onceregistry': None, 'name': None} 0x7f8915f0b158 [1] 0x7f8915f0d190 [1] '_warnings' 0x7f8915f65e28 [1] [1] 8258 segmentation fault (core dumped) PYTHONDUMPREFS=1 ./python -c pass

Python 3.5.1 works fine

$ git checkout v3.5.1 && git clean -xdf && time ./configure --with-pydebug && make -s -j4 && PYTHONDUMPREFS=1 ./python -c pass (...) 0x7f60ba2e51e0 [58] str 0x7f60ba2e5178 [67] str 0x7f60ba2e5110 [58] str 0x7f60ba2e50a8 [58] str 0x7f60ba2e5040 [38] str 0x7f60ba2e3350 [22] str 0x7f60ba2e32e0 [51] str 0x7f60ba2e3270 [156] str 0x7f60ba2e3200 [22] str 0x7f60ba2e3190 [22] str 0x7f60ba2e3120 [6] str 0x7f60ba2e30c8 [1] dict 0x7f60ba2e4040 [142] str 0x7f60ba2e3058 [1] dict 0x7f60ba2e2058 [352] tuple 0x8986e0 [423] type

Thanks