New submission from Antoine Pitrou:
I got a weird crash in an interpreter session. Here is what I did:
$ ./python
Python 3.5.0a0 (default:fd658692db3a+, Oct 15 2014, 23:13:43)
[GCC 4.8.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open('toto', 'ab')
>>> f.write(b'bb')
2
>>> f.flush()
>>>
>>> f = open('toto', 'ab')
__main__:1: ResourceWarning: unclosed file <_io.BufferedWriter name='toto'>
python: Objects/dictobject.c:855: insertdict: Assertion `ep->me_key != ((void
*)0) && ep->me_key != (&_dummy_struct)' failed.
Abandon (core dumped)
Here are the inner frames of the traceback:
(gdb) bt
#0 0x00007f27e691df77 in __GI_raise (sig=sig@entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007f27e69215e8 in __GI_abort () at abort.c:90
#2 0x00007f27e6916d43 in __assert_fail_base (fmt=0x7f27e6a6df58 "%s%s%s:%u:
%s%sAssertion `%s' failed.\n%n",
assertion=assertion@entry=0x6878d0 "ep->me_key != ((void *)0) && ep->me_key
!= (&_dummy_struct)", file=file@entry=0x6874f2 "Objects/dictobject.c",
line=line@entry=855, function=function@entry=0x6880a0
<__PRETTY_FUNCTION__.10152> "insertdict") at assert.c:92
#3 0x00007f27e6916df2 in __GI___assert_fail (assertion=0x6878d0 "ep->me_key !=
((void *)0) && ep->me_key != (&_dummy_struct)",
file=0x6874f2 "Objects/dictobject.c", line=855, function=0x6880a0
<__PRETTY_FUNCTION__.10152> "insertdict") at assert.c:101
#4 0x00000000004b65d0 in insertdict (mp=0x7f27e76f9838, key='f',
hash=-9123380860235530973, value=<_io.BufferedWriter at remote 0x7f27e766e758>)
at Objects/dictobject.c:855
#5 0x00000000004b752a in PyDict_SetItem (
op={'f': <_io.BufferedWriter at remote 0x7f27e766e758>, '__builtins__':
<module at remote 0x7f27e7750358>, '__spec__': None, '__warningregistry__':
{'version': 0}, '__doc__': None, 'rlcompleter': <module at remote
0x7f27e5f0b358>, '__name__': '__main__', '__cached__': None, '__package__':
None, '__loader__': <SourceFileLoader(name='__main__',
path='/home/antoine/.pythonrc.py') at remote 0x7f27e765d468>, 'readline':
<module at remote 0x7f27e5f0b058>},
key='f', value=<_io.BufferedWriter at remote 0x7f27e766e758>) at
Objects/dictobject.c:1245
#6 0x00000000005a9f7c in PyEval_EvalFrameEx (f=Frame 0x7f27e7704d78, for file
<stdin>, line 1, in <module> (), throwflag=0) at Python/ceval.c:2065
Here are the hash initialization values:
(gdb) p _Py_HashSecret
$1 = {uc = "\260\306\vA\a\342\274\337\341\026\003\bbq\366\f\"\032E\232jb%\023",
fnv = {prefix = -2324734786846079312, suffix = 934058638581110497},
siphash = {k0 = 16122009286863472304, k1 = 934058638581110497}, djbx33a =
{padding = "\260\306\vA\a\342\274\337\341\026\003\bbq\366\f",
suffix = 1379617070853200418}, expat = {padding =
"\260\306\vA\a\342\274\337\341\026\003\bbq\366\f", hashsalt =
1379617070853200418}}
(gdb) p PyHash_Func
$2 = {hash = 0x5ee557 <siphash24>, name = 0x6b2020 "siphash24", hash_bits = 64,
seed_bits = 128}
The crash seems difficult to reproduce simply by typing the lines above.
Perhaps by forcing the hash initialization values as above.
----------
components: Interpreter Core
messages: 229524
nosy: Mark.Shannon, pitrou
priority: normal
severity: normal
status: open
title: Crash in insertdict
type: crash
versions: Python 3.5
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue22653>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com