[Mono-list] mono clr via pythonnet: invalid pointer

Daniel Krause madakr at web.de
Sun Feb 5 14:38:33 UTC 2017


A follow-up from my side:
The simplified test code was running with nPython.exe, but not with
pythonnet (some library in the ubuntu system was throwing an error...).
I tried if it was possible to run my code with nPython.exe, that failed as
I use additional libraries and drivers which could not be handled through
nPython.

I made an attempt to install a fresh Ubuntu in a VM ( so no
arm-architecture, just normal PC), went again through all the steps of
installing mono and pythonnet, but it still did not work...

At that point I simply gave up wasting my time chasing errors I do not
understand.
A tiny windows PC is doing now its work, up and running smoothly in less
than one evening... The price (with windows installed) is appr. 7 times
higher than an raspberry, but at least I have now a working solution :-/.

Maybe it safes someone else some time (though not money...).

Daniel

2017-01-24 20:23 GMT+01:00 William Ivanski <william.ivanski at gmail.com>:

> nPython.exe is just a C# tool to simulate the behavior of pure python
> interpreter. It uses Python.Runtime.dll, which is also C# and contains all
> logic to make the "bridge" between:
>
> - Native calls to Python and program logic: they all are simply redirected
> to pure python interpreter already installed in your system.
> - Instantiations of C# objects (from C# itself or contained in an dll
> referenced by your script): they are kept in "C# realm" and only translated
> to a way python can understand.
>
> I didn't compile python here, I only compiled nPython. Do you need to
> compile python too? Can't you just install python on your system via apt?
>
> Em ter, 24 de jan de 2017 às 16:49, Daniel Krause <madakr at web.de>
> escreveu:
>
>> Hello William,
>>
>> I tried your nPython.exe, yes, it works on my raspberry.
>>
>> Could you explain, what you did to create this python-version? Did you
>> compile it on Windows?
>> And how would you add modules like numpy etc?
>> I am sorry if these questions sound silly, but I have no experience with
>> compiling python from scratch.
>>
>> Thanks a lot for your support so far
>> Daniel
>>
>>
>> 2017-01-22 22:03 GMT+01:00 Daniel Krause <madakr at web.de>:
>>
>> Hi,
>>
>> I tried to compile python 3.6 from source.
>> ./configure
>> make
>> worked without problems.
>>
>> But
>> make test
>> failed.
>> The logfile is attached.
>>
>> I am afraid this problem is beyond the scope of this mailing list, but
>> perhaps someone has an idea anyway.
>>
>> Thanks
>> Daniel
>>
>> 2017-01-22 19:38 GMT+01:00 William Ivanski <william.ivanski at gmail.com>:
>>
>> Hey, Daniel,
>>
>> Maybe it's a bug on the version of Python for .NET you compiled. Maybe if
>> you try the .EXE and .DLL I compiled and sent you?
>>
>> Em dom, 22 de jan de 2017 às 15:10, Daniel Krause <madakr at web.de>
>> escreveu:
>>
>> Hello,
>>
>> I installed the current mono-version 4.6.2.16-0xamarin1 and upgraded my
>> system with `sudo -H apt-get upgrade mono-complete`.
>> The examples for mono worked (I tested the console example and the
>> winform example), the clr import from python still gives me errors:
>>
>> import clr
>> *** Error in `python3.5': free(): invalid pointer: 0x76011050 ***
>> Stacktrace:
>>
>>   at <unknown> <0xffffffff>
>>   at (wrapper managed-to-native) Python.Runtime.Runtime.Py_Initialize ()
>> <0x00033>
>>   at Python.Runtime.Runtime.Initialize () <0x00027>
>>   at Python.Runtime.PythonEngine.Initialize () <0x0007f>
>>   at Python.Runtime.PythonEngine.InitExt () <0x0002f>
>>   at (wrapper runtime-invoke) <Module>.runtime_invoke_intptr
>> (object,intptr,intptr,intptr) <0x0006f>
>>
>> Native stacktrace:
>>
>>
>> Debug info from gdb:
>>
>> [New LWP 21070]
>> [Thread debugging using libthread_db enabled]
>> Using host libthread_db library "/lib/arm-linux-gnueabihf/
>> libthread_db.so.1".
>> __libc_do_syscall () at ../sysdeps/unix/sysv/linux/
>> arm/libc-do-syscall.S:46
>> 46    ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S: No such file or
>> directory.
>>   Id   Target Id         Frame
>> * 1    Thread 0x76f1c300 (LWP 21069) "python3.5" __libc_do_syscall () at
>> ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46
>>   2    Thread 0x761b1470 (LWP 21070) "Finalizer" __libc_do_syscall () at
>> ../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:46
>>
>> Thread 2 (Thread 0x761b1470 (LWP 21070)):
>> #0  __libc_do_syscall () at ../sysdeps/unix/sysv/linux/
>> arm/libc-do-syscall.S:46
>> #1  0x76eb2834 in futex_abstimed_wait_cancelable (private=0, abstime=0x0,
>> expected=1, futex_word=0x76843c78) at ../sysdeps/unix/sysv/linux/
>> futex-internal.h:205
>> #2  do_futex_wait (sem=sem at entry=0x76843c78, abstime=0x0) at
>> sem_waitcommon.c:115
>> #3  0x76eb2916 in __new_sem_wait_slow (sem=0x76843c78, abstime=0x0) at
>> sem_waitcommon.c:282
>> #4  0x76734cc4 in ?? () from /usr/lib/libmonoboehm-2.0.so.1
>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>
>> Thread 1 (Thread 0x76f1c300 (LWP 21069)):
>> #0  __libc_do_syscall () at ../sysdeps/unix/sysv/linux/
>> arm/libc-do-syscall.S:46
>> #1  0x76eb432a in __waitpid (pid=21071, stat_loc=0x7eb086e4, options=0)
>> at ../sysdeps/unix/sysv/linux/waitpid.c:29
>> #2  0x76695d08 in ?? () from /usr/lib/libmonoboehm-2.0.so.1
>>
>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>
>> =================================================================
>> Got a SIGABRT while executing native code. This usually indicates
>> a fatal error in the mono runtime or one of the native libraries
>> used by your application.
>> =================================================================
>>
>> Aborted (core dumped)
>>
>> 2017-01-18 13:37 GMT+01:00 William Ivanski <william.ivanski at gmail.com>:
>>
>> Hey, Daniel,
>>
>> Sorry I didn't ask from which repo you installed mono on your system. I'm
>> assuming you installed from Ubuntu repo, which provides mono 4.2 even on
>> Ubuntu 16.10.
>>
>> If you want to try mono 4.6, you may be able to install it on your system
>> from official mono repo: http://www.mono-project.
>> com/docs/getting-started/install/linux/
>>
>> Please let me know if it works for you.
>>
>> Em qua, 18 de jan de 2017 às 10:31, Daniel Krause <madakr at web.de>
>> escreveu:
>>
>> Hi William,
>>
>> it is good to hear, that Ubuntu 16.10 is working.
>> Unfortunately there is no Ubuntu 16.10 for Raspberry available (or let's
>> say, I did not find it, and I would be happy with the LTS-version...).
>>
>> Pythonnet is compiled from github as on your machine. I am using the same
>> mono-version as the pythonnet project uses for its testing, but on my
>> machine something is not working.
>>
>> You are also using a newer version of mono.
>>
>> Maybe there is a way to upgrade the version of mono on my system to
>> version 4.6.2 to give that a test?
>>
>> Thanks
>> Daniel
>>
>>
>> 2017-01-18 11:56 GMT+01:00 William Ivanski <william.ivanski at gmail.com>:
>>
>> Hi, Andres, Daniel and others,
>>
>> It works, I'm using Kubuntu 16.10 and mono 4.6.2. To run:
>>
>> mono nPython.exe test.py
>>
>> I compiled Python for .NET myself from GitHub repo. You can always toss
>> away the EXE and the DLL, and compile them yourself.
>>
>> Em qua, 18 de jan de 2017 às 03:16, Andres <knocte at gmail.com> escreveu:
>>
>> Daniel, and others, I advice not to consume random binaries from random
>> people on the internet.
>>
>> On Wednesday, January 18, 2017 06:09 AM, William Ivanski wrote:
>> > Please see solution
>> > here: https://drive.google.com/file/d/0B6qR86JfcfthdDNwS2g4V2RFRmc/
>> view?usp=sharing
>> >
>> > It works, I'm using Kubuntu 16.10 and mono 4.6.2. I compiled Python for
>> > .NET myself from GitHub repo.
>> > To run:
>> >
>> > mono nPython.exe test.py
>> >
>> > Em ter, 17 de jan de 2017 às 18:57, Daniel Krause <madakr at web.de
>> > <mailto:madakr at web.de>> escreveu:
>> >
>> >     Hello,
>> >
>> >     I am trying to to use mono from python via pythonnet.
>> >
>> >     My system:
>> >
>> >     *Ubuntu*
>> >
>> >       * Release 16.04.1 LTS (Xenial Xerus) 32-bit
>> >       * Kernel Linux 4.1.19-v7+ armv7l
>> >       * MATE 1.12.1
>> >
>> >     *Hardware*
>> >
>> >       * Memory: 925,8 MiB
>> >       * Processor: ARMv7 Processor rev 4 (v7l) × 4
>> >
>> >     *Mono: *mono-complete (4.2.4.4-0wheezy1)
>> >
>> >     **More information on the system and installed dependencies for
>> >     pythonnet can be found in this thread:
>> >     https://github.com/pythonnet/pythonnet/issues/327
>> >
>> >     The following small test script fails at the first step (importing
>> >     the clr):
>> >     #!/usr/bin/env python3
>> >
>> >     print('import clr')
>> >     import clr
>> >     print('clr imported')
>> >
>> >     if __name__ == '__main__':
>> >         print('main')
>> >         exit(0)
>> >
>> >     It gives the following traceback:
>> >     import clr
>> >     *** Error in `python3.5': free(): invalid pointer: 0x75b92050 ***
>> >     Stacktrace:
>> >
>> >       at <unknown> <0xffffffff>
>> >       at (wrapper managed-to-native)
>> >     Python.Runtime.Runtime.Py_Initialize () <0xffffffff>
>> >       at Python.Runtime.Runtime.Initialize () <0x0002f>
>> >       at Python.Runtime.PythonEngine.Initialize () <0x00093>
>> >       at Python.Runtime.PythonEngine.InitExt () <0x0002f>
>> >       at (wrapper runtime-invoke) <Module>.runtime_invoke_intptr
>> >     (object,intptr,intptr,intptr) <0xffffffff>
>> >
>> >     Native stacktrace:
>> >
>> >
>> >     Debug info from gdb:
>> >
>> >     [New LWP 1901]
>> >     [Thread debugging using libthread_db enabled]
>> >     Using host libthread_db library
>> >     "/lib/arm-linux-gnueabihf/libthread_db.so.1".
>> >     0x76f23454 in __libc_do_syscall () from
>> >     /lib/arm-linux-gnueabihf/libpthread.so.0
>> >       Id   Target Id         Frame
>> >     * 1    Thread 0x76f8a300 (LWP 1900) "python3.5" 0x76f23454 in
>> >     __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
>> >       2    Thread 0x76250470 (LWP 1901) "Finalizer" 0x76f23454 in
>> >     __libc_do_syscall () from /lib/arm-linux-gnueabihf/libpthread.so.0
>> >
>> >     Thread 2 (Thread 0x76250470 (LWP 1901)):
>> >     #0  0x76f23454 in __libc_do_syscall () from
>> >     /lib/arm-linux-gnueabihf/libpthread.so.0
>> >     #1  0x76f20834 in do_futex_wait.constprop () from
>> >     /lib/arm-linux-gnueabihf/libpthread.so.0
>> >     #2  0x76f20916 in __new_sem_wait_slow.constprop.0 () from
>> >     /lib/arm-linux-gnueabihf/libpthread.so.0
>> >     #3  0x767dae84 in mono_sem_wait () from
>> /usr/lib/libmonoboehm-2.0.so.1
>> >     #4  0x767a89a0 in ?? () from /usr/lib/libmonoboehm-2.0.so.1
>> >     Backtrace stopped: previous frame identical to this frame (corrupt
>> >     stack?)
>> >
>> >     Thread 1 (Thread 0x76f8a300 (LWP 1900)):
>> >     #0  0x76f23454 in __libc_do_syscall () from
>> >     /lib/arm-linux-gnueabihf/libpthread.so.0
>> >     #1  0x76f2232a in waitpid () from
>> >     /lib/arm-linux-gnueabihf/libpthread.so.0
>> >     #2  0x767122bc in ?? () from /usr/lib/libmonoboehm-2.0.so.1
>> >     Backtrace stopped: previous frame identical to this frame (corrupt
>> >     stack?)
>> >
>> >     =================================================================
>> >     Got a SIGABRT while executing native code. This usually indicates
>> >     a fatal error in the mono runtime or one of the native libraries
>> >     used by your application.
>> >     =================================================================
>> >
>> >     Aborted (core dumped)
>> >
>> >     My debugging skills are very poor, anyway, I tried to use valgrind
>> >     to get perhaps a better idea. The output:
>> >     ==2813== Memcheck, a memory error detector
>> >     ==2813== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward
>> et al.
>> >     ==2813== Using Valgrind-3.11.0 and LibVEX; rerun with -h for
>> >     copyright info
>> >     ==2813== Command: python3.5 pythonnet_test.py
>> >     ==2813==
>> >     disInstr(arm): unhandled instruction: 0xF1010200
>> >                      cond=15(0xF) 27:20=16(0x10) 4:4=0 3:0=0(0x0)
>> >     ==2813== valgrind: Unrecognised instruction at address 0x48596f4.
>> >     ==2813==    at 0x48596F4: ??? (in
>> >     /usr/lib/arm-linux-gnueabihf/libarmmem.so)
>> >     ==2813== Your program just tried to execute an instruction that
>> Valgrind
>> >     ==2813== did not recognise.  There are two possible reasons for
>> this.
>> >     ==2813== 1. Your program has a bug and erroneously jumped to a
>> non-code
>> >     ==2813==    location.  If you are running Memcheck and you just saw
>> a
>> >     ==2813==    warning about a bad jump, it's probably your program's
>> >     fault.
>> >     ==2813== 2. The instruction is legitimate but Valgrind doesn't
>> >     handle it,
>> >     ==2813==    i.e. it's Valgrind's fault.  If you think this is the
>> >     case or
>> >     ==2813==    you are not sure, please let us know and we'll try to
>> >     fix it.
>> >     ==2813== Either way, Valgrind will now raise a SIGILL signal which
>> will
>> >     ==2813== probably kill your program.
>> >     ==2813==
>> >     ==2813== Process terminating with default action of signal 4
>> (SIGILL)
>> >     ==2813==  Illegal opcode at address 0x48596F4
>> >     ==2813==    at 0x48596F4: ??? (in
>> >     /usr/lib/arm-linux-gnueabihf/libarmmem.so)
>> >     ==2813==
>> >     ==2813== HEAP SUMMARY:
>> >     ==2813==     in use at exit: 1,088 bytes in 10 blocks
>> >     ==2813==   total heap usage: 62 allocs, 52 frees, 5,692 bytes
>> allocated
>> >     ==2813==
>> >     ==2813== LEAK SUMMARY:
>> >     ==2813==    definitely lost: 0 bytes in 0 blocks
>> >     ==2813==    indirectly lost: 0 bytes in 0 blocks
>> >     ==2813==      possibly lost: 0 bytes in 0 blocks
>> >     ==2813==    still reachable: 1,088 bytes in 10 blocks
>> >     ==2813==         suppressed: 0 bytes in 0 blocks
>> >     ==2813== Rerun with --leak-check=full to see details of leaked
>> memory
>> >     ==2813==
>> >     ==2813== For counts of detected and suppressed errors, rerun with:
>> -v
>> >     ==2813== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0
>> from 0)
>> >     Illegal instruction (core dumped)
>> >
>> >     Both the traceback from python and the output of valgrind are beyond
>> >     my comprehension.
>> >
>> >     Has anyone have an idea, what is wrong, and how to fix it?
>> >
>> >     Thanks
>> >     Daniel
>> >     _______________________________________________
>> >     Mono-list maillist  -  Mono-list at lists.dot.net
>> >     <mailto:Mono-list at lists.dot.net>
>> >     http://lists.dot.net/mailman/listinfo/mono-list
>> >
>> > --
>> >
>> > William Ivanski - Microsoft MVP
>> >
>> >
>> >
>> > _______________________________________________
>> > Mono-list maillist  -  Mono-list at lists.dot.net
>> > http://lists.dot.net/mailman/listinfo/mono-list
>> >
>>
>> --
>
> William Ivanski - Microsoft MVP
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dot.net/pipermail/mono-list/attachments/20170205/5b5875f2/attachment-0001.html>


More information about the Mono-list mailing list