Thank you for your efforts with IronPython 2.6.1. I am looking forward to the
final product.
I was testing 2.6.1 RC1 to see if an issue I was having with v2.6.0 was fixed
and I ran into an interesting problem with pyReadLine (v1.13), which I had
installed under CPython v2.6.4. A python-based program I am testing requires
the readline module but I am getting an odd error when readline is loaded.
The error is "SystemError: Attempted to read or write protected memory. This is
often an indication that other memory is corrupt."
I created a simple test case that shows the problem in action. This test case
runs fine under CPython v2.6.4 but fails under IronPython v2.6.1 RC1. Please
ignore the fact that it is really weird-looking code and not something that
would normally be used. The test case demonstrates the problem in as few lines
as possible while exercising the same steps that readline uses (see the
install_readline() function in readline's Console.py).
import ctypes
msvcrt = ctypes.cdll.LoadLibrary("msvcrt")
systemfn = ctypes.c_int.from_address(ctypes.addressof(msvcrt.system))
systemfn.value =
ctypes.c_int.from_address(ctypes.addressof(msvcrt.system)).value
The last line triggers the error: "SystemError: Attempted to read or write
protected memory. This is often an indication that other memory is corrupt."
Apparently readline overwrites a function pointer
("PyOS_ReadlineFunctionPointer") inside the DLL that implements the sys module
so that the line input functionality passes through the python readline module.
Since readline uses the sys.dllhandle to get access to the DLL and in
IronPython v2.6.1 RC1 the sys.dllhandle is 0, I'm thinking the pyReadline
package won't work on IronPython even if the above error is fixed.
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com