Message191092
I just found the readline/GIL issue while working on #18203. I created #18205 but then I found this issue. I just closed #18205 as a duplicate. Here is a patch for Python 3.4.
--
Copy of the initial message (msg191089):
The callback PyOS_ReadlineFunctionPointer (used to read a line from the standard input) must return a buffer allocated by PyMem_Malloc(), but PyOS_Readline() releases the GIL before calling PyOS_ReadlineFunctionPointer.
Simplified extract of PyOS_Readline():
Py_BEGIN_ALLOW_THREADS
if (!isatty (fileno (sys_stdin)) || !isatty (fileno (sys_stdout)))
rv = PyOS_StdioReadline (sys_stdin, sys_stdout, prompt);
else
rv = (*PyOS_ReadlineFunctionPointer)(sys_stdin, sys_stdout,
prompt);
Py_END_ALLOW_THREADS
tok_nextc() calls PyOS_Readline() and calls PyMem_FREE() to release its result.
PyOS_ReadlineFunctionPointer should allocate memory using malloc(), not using PyMem_Malloc(). But PyOS_Readline() should copy the line into a buffer allocated by PyMem_Malloc() to keep backward compatibility.
See also issue #18203 and #3329. |
|
Date |
User |
Action |
Args |
2013-06-13 21:22:30 | vstinner | set | recipients:
+ vstinner, gregory.p.smith, pitrou, kristjan.jonsson, trent, meador.inge |
2013-06-13 21:22:30 | vstinner | set | messageid: <1371158550.71.0.843018865072.issue16742@psf.upfronthosting.co.za> |
2013-06-13 21:22:30 | vstinner | link | issue16742 messages |
2013-06-13 21:22:30 | vstinner | create | |
|