spesmilo / electrum

Electrum Bitcoin Wallet
https://electrum.org
MIT License
7.55k stars 3.11k forks source link

unicodeobject.c #2444

Closed bitmodeler closed 7 years ago

bitmodeler commented 7 years ago

I suffered through fixing up jsonrpclib issues (and SimpleXMLRPCServer...)

I am on Windows, 64 bit, using python 3.6.1 (pycrypto, pyqt4, etc. are all installed...)

When electrum starts, python bombs on a module called unicodeobject.c, and the problem is an strlen is evidently being performed on a null pointer.

Does this suggest what I might be doing wrong, or what may have been overlooked in this port?

The routine that gets a null pointer passed to it is unicode_fromformat_write_cstr

knocte commented 7 years ago

Please copy+paste exact and complete error messages or stacktraces/backtraces.

bitmodeler commented 7 years ago

It's not a python stacktrace; it's the C code in python itself that craps out when I try to run electrum. I installed the debug symbols for python.

Python call stack in (V)C is attached: stack.txt

The code that it is bombing on in that module is:

`static int unicode_fromformat_write_cstr(_PyUnicodeWriter writer, const char str, Py_ssize_t width, Py_ssize_t precision) { / UTF-8 / Py_ssize_t length; PyObject *unicode; int res;

length = strlen(str); // referencing the argument str is causing an access violation...`

And the access violation is: "Unhandled exception at 0x0000000054D4CB53 (python36.dll) in python.exe: 0xC0000005: Access violation reading location 0x0000000100013451."

My python 3.6.1 has been solid to date (I did a web app using falcon and filewatch, without incident, and another that did communication over the USB port...)

bitmodeler commented 7 years ago

I also set PYTHONPATH to the site packages folder...

bitmodeler commented 7 years ago

AND just for laughs, tried running it as Admin; same result.

Also had prepped the icons.

This is the python 3.6.1 source link it's bombing on: https://svn.python.org/projects/python/trunk/Objects/unicodeobject.c

On Windows, I should be invoking it by doing: python electrum Right?

ecdsa commented 7 years ago

use python2

bitmodeler commented 7 years ago

Are you guys interested in completing the upgrade of this code to python 3?

ecdsa commented 7 years ago

there's already a python3 branch. it's not being deployed because pythonforandroid is not ready

bitmodeler commented 7 years ago

Well, it's evident that there are Unicode issues lurking in the code (a big difference between python 2 and 3, right?) Let me know if you want me to work with you on isolating what they are...

ecdsa commented 7 years ago

well, you can checkout the python3 branch and try to rebase it