[Mono-list] System.IO.MonoIO.Read - w32error-unix.c: unknown error (19) "No such device"

Dominik Schmidt dominik at logview.info
Sun Aug 13 04:00:18 UTC 2017


Hi @all, 

I use Mono JIT compiler version 5.4.0.135 on my Raspberry Pi but I think
this is a more common problem / bug which could be related to Linux systems.

I have a PS3 controller attached over Bluetooth which generates a Device
file /dev/input/js0. You can read this device as shown in this code: 
http://mpolaczyk.pl/raspberry-pi-mono-c-joystick-handler/

It works really nice. But when you run the program and switch off the PS3
controller the device file is gone. And then you get this error / stack
trace: 
-> See bottom of this mail. 

I tried to catch that error in the following way: 
                try
                {
                    fs.Read(buff, 0, 8);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
But it won´t work. 

Is this a general but in Mono? Maybe exception handling isn´t complete in
System.IO.MonoIO.Read ?
Would be great if anyone can give some advice. 

Regards
   Dominik

-------
w32error-unix.c: unknown error (19) "No such device"
Stacktrace:

  at <unknown> <0xffffffff>
  at (wrapper managed-to-native) System.IO.MonoIO.Read
(intptr,byte[],int,int,System.IO.MonoIOError&) <0x0004b>
  at System.IO.MonoIO.Read
(System.Runtime.InteropServices.SafeHandle,byte[],int,int,System.IO.MonoIOEr
ror&) [0x00010] in <dd026cff67c145fd803d52e54da26efb>:0
  at System.IO.FileStream.ReadData
(System.Runtime.InteropServices.SafeHandle,byte[],int,int) [0x00002] in
<dd026cff67c145fd803d52e54da26efb>:0
  at System.IO.FileStream.RefillBuffer () [0x00006] in
<dd026cff67c145fd803d52e54da26efb>:0
  at System.IO.FileStream.ReadInternal (byte[],int,int) [0x00049] in
<dd026cff67c145fd803d52e54da26efb>:0
  at System.IO.FileStream.Read (byte[],int,int) [0x000a1] in
<dd026cff67c145fd803d52e54da26efb>:0
  at Program.Main (string[]) [0x0009c] in
<26393b4282f94cf39b0963c55aa38cd2>:0
  at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object
(object,intptr,intptr,intptr) [0x0004e] in
<26393b4282f94cf39b0963c55aa38cd2>:0
/proc/self/maps:
00010000-00339000 r-xp 00000000 b3:02 43829      /usr/bin/mono-sgen
00348000-00349000 r--p 00328000 b3:02 43829      /usr/bin/mono-sgen
00349000-0034b000 rw-p 00329000 b3:02 43829      /usr/bin/mono-sgen
0034b000-00377000 rw-p 00000000 00:00 0
00cd7000-00de2000 rw-p 00000000 00:00 0          [heap]
b4000000-b4021000 rw-p 00000000 00:00 0
b4021000-b4100000 ---p 00000000 00:00 0
b41a0000-b482c000 r-xp 00000000 b3:02 257930
/usr/lib/mono/aot-cache/arm/mscorlib.dll.so
b482c000-b483b000 ---p 0068c000 b3:02 257930
/usr/lib/mono/aot-cache/arm/mscorlib.dll.so
b483b000-b483c000 rw-p 0068b000 b3:02 257930
/usr/lib/mono/aot-cache/arm/mscorlib.dll.so
b483c000-b484a000 rw-p 00000000 00:00 0
b484a000-b4c00000 r--p 00000000 b3:02 257788
/usr/lib/mono/4.5/mscorlib.dll
b4c00000-b5400000 rw-p 00000000 00:00 0
b5400000-b5401000 ---p 00000000 00:00 0
b5401000-b5c00000 rwxp 00000000 00:00 0
b5c00000-b6000000 rw-p 00000000 00:00 0
b6134000-b6135000 ---p 00000000 00:00 0
b6135000-b6234000 rwxp 00000000 00:00 0
b6234000-b62b4000 rw-p 00000000 00:00 0
b62b5000-b62c5000 rwxp 00000000 00:00 0
b62c5000-b62c6000 ---p 00000000 00:00 0
b62c6000-b6ac5000 rwxp 00000000 00:00 0
b6ac5000-b6ac6000 rw-p 00000000 00:00 0
b6ac6000-b6af5000 ---p 00000000 00:00 0
b6af5000-b6c7e000 r--p 00000000 b3:02 11469
/usr/lib/locale/locale-archive
b6c7e000-b6da9000 r-xp 00000000 b3:02 1946
/lib/arm-linux-gnueabihf/libc-2.19.so
b6da9000-b6db9000 ---p 0012b000 b3:02 1946
/lib/arm-linux-gnueabihf/libc-2.19.so
b6db9000-b6dbb000 r--p 0012b000 b3:02 1946
/lib/arm-linux-gnueabihf/libc-2.19.so
b6dbb000-b6dbc000 rw-p 0012d000 b3:02 1946
/lib/arm-linux-gnueabihf/libc-2.19.so
b6dbc000-b6dbf000 rw-p 00000000 00:00 0
b6dbf000-b6ddc000 r-xp 00000000 b3:02 1959
/lib/arm-linux-gnueabihf/libgcc_s.so.1
b6ddc000-b6deb000 ---p 0001d000 b3:02 1959
/lib/arm-linux-gnueabihf/libgcc_s.so.1
b6deb000-b6dec000 rw-p 0001c000 b3:02 1959
/lib/arm-linux-gnueabihf/libgcc_s.so.1
b6dec000-b6e00000 r-xp 00000000 b3:02 2006
/lib/arm-linux-gnueabihf/libpthread-2.19.so
b6e00000-b6e10000 ---p 00014000 b3:02 2006
/lib/arm-linux-gnueabihf/libpthread-2.19.so
b6e10000-b6e11000 r--p 00014000 b3:02 2006
/lib/arm-linux-gnueabihf/libpthread-2.19.so
b6e11000-b6e12000 rw-p 00015000 b3:02 2006
/lib/arm-linux-gnueabihf/libpthread-2.19.so
b6e12000-b6e14000 rw-p 00000000 00:00 0
b6e14000-b6e16000 r-xp 00000000 b3:02 1954
/lib/arm-linux-gnueabihf/libdl-2.19.so
b6e16000-b6e25000 ---p 00002000 b3:02 1954
/lib/arm-linux-gnueabihf/libdl-2.19.so
b6e25000-b6e26000 r--p 00001000 b3:02 1954
/lib/arm-linux-gnueabihf/libdl-2.19.so
b6e26000-b6e27000 rw-p 00002000 b3:02 1954
/lib/arm-linux-gnueabihf/libdl-2.19.so
b6e27000-b6e2d000 r-xp 00000000 b3:02 2009
/lib/arm-linux-gnueabihf/librt-2.19.so
b6e2d000-b6e3c000 ---p 00006000 b3:02 2009
/lib/arm-linux-gnueabihf/librt-2.19.so
b6e3c000-b6e3d000 r--p 00005000 b3:02 2009
/lib/arm-linux-gnueabihf/librt-2.19.so
b6e3d000-b6e3e000 rw-p 00006000 b3:02 2009
/lib/arm-linux-gnueabihf/librt-2.19.so
b6e3e000-b6ea7000 r-xp 00000000 b3:02 1972
/lib/arm-linux-gnueabihf/libm-2.19.so
b6ea7000-b6eb7000 ---p 00069000 b3:02 1972
/lib/arm-linux-gnueabihf/libm-2.19.so
b6eb7000-b6eb8000 r--p 00069000 b3:02 1972
/lib/arm-linux-gnueabihf/libm-2.19.so
b6eb8000-b6eb9000 rw-p 0006a000 b3:02 1972
/lib/arm-linux-gnueabihf/libm-2.19.so
b6eb9000-b6ebc000 rw-p 00000000 00:00 0
b6ebc000-b6ebd000 r--p 00000000 b3:02 19714
/usr/share/locale/en_GB/LC_MESSAGES/libc.mo
b6ebd000-b6ecd000 rwxp 00000000 00:00 0
b6ecd000-b6ed2000 r-xp 00000000 b3:02 10212
/usr/lib/arm-linux-gnueabihf/libarmmem.so
b6ed2000-b6ee1000 ---p 00005000 b3:02 10212
/usr/lib/arm-linux-gnueabihf/libarmmem.so
b6ee1000-b6ee2000 rw-p 00004000 b3:02 10212
/usr/lib/arm-linux-gnueabihf/libarmmem.so
b6ee2000-b6f02000 r-xp 00000000 b3:02 1914
/lib/arm-linux-gnueabihf/ld-2.19.so
b6f02000-b6f04000 r--p 00000000 b3:02 135882
/home/pi/pieasy/PS3_Values.exe
b6f04000-b6f0a000 rw-p 00000000 00:00 0
b6f0a000-b6f0b000 rw-s 00000000 00:10 11754      /dev/shm/mono.864
b6f0b000-b6f0c000 ---p 00000000 00:00 0
b6f0c000-b6f0d000 r--p 00000000 00:00 0
b6f0d000-b6f11000 rw-p 00000000 00:00 0
b6f11000-b6f12000 r--p 0001f000 b3:02 1914
/lib/arm-linux-gnueabihf/ld-2.19.so
b6f12000-b6f13000 rw-p 00020000 b3:02 1914
/lib/arm-linux-gnueabihf/ld-2.19.so
bef44000-bef65000 rwxp 00000000 00:00 0          [stack]
bef80000-bef81000 r-xp 00000000 00:00 0          [sigpage]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]

Native stacktrace:


Debug info from gdb:

Cannot access memory at address 0xe
Mono support loaded.
[New LWP 869]
[New LWP 866]
[New LWP 865]
[Thread debugging using libthread_db enabled]
Using host libthread_db library
"/lib/arm-linux-gnueabihf/libthread_db.so.1".
0xb6dfbef8 in __libc_waitpid (pid=875, pid at entry=<error reading variable:
Cannot access memory at address 0xe>, stat_loc=0xbef63208, options=0) at
../sysdeps/unix/sysv/linux/waitpid.c:40
40      ../sysdeps/unix/sysv/linux/waitpid.c: No such file or directory.
  Id   Target Id         Frame
  4    Thread 0xb6ac4450 (LWP 865) "SGen worker" 0xb6df77a4 in
__pthread_cond_wait (Cannot access memory at address 0x1
cond=0x376438, mutex=0x376420) at pthread_cond_wait.c:187
  3    Thread 0xb5bff450 (LWP 866) "SGen worker" 0xb6df77a4 in
__pthread_cond_wait (Cannot access memory at address 0x1
cond=0x375760, mutex=0x375748) at pthread_cond_wait.c:187
  2    Thread 0xb6233450 (LWP 869) "Finalizer" 0xb6df9a40 in do_futex_wait
(isem=isem at entry=0x36d83c) at ../nptl/sysdeps/unix/sysv/linux/sem_wait.c:48
* 1    Thread 0xb6f0d000 (LWP 864) "mono" 0xb6dfbef8 in __libc_waitpid
(pid=875, pid at entry=<error reading variable: Cannot access memory at address
0xe>, stat_loc=0xbef63208, options=0) at
../sysdeps/unix/sysv/linux/waitpid.c:40

Thread 4 (Thread 0xb6ac4450 (LWP 865)):
Cannot access memory at address 0x1
#0  0xb6df77a4 in __pthread_cond_wait (cond=0x376438, mutex=0x376420) at
pthread_cond_wait.c:187
#1  0x0025e2dc in ?? ()
Cannot access memory at address 0x1
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 3 (Thread 0xb5bff450 (LWP 866)):
Cannot access memory at address 0x1
#0  0xb6df77a4 in __pthread_cond_wait (cond=0x375760, mutex=0x375748) at
pthread_cond_wait.c:187
#1  0x0025e29c in ?? ()
Cannot access memory at address 0x1
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 2 (Thread 0xb6233450 (LWP 869)):
#0  0xb6df9a40 in do_futex_wait (isem=isem at entry=0x36d83c) at
../nptl/sysdeps/unix/sysv/linux/sem_wait.c:48
#1  0xb6df9af4 in __new_sem_wait (sem=0x36d83c) at
../nptl/sysdeps/unix/sysv/linux/sem_wait.c:69
#2  0x001dc1e0 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 1 (Thread 0xb6f0d000 (LWP 864)):
Python Exception <class 'gdb.MemoryError'> Cannot access memory at address
0xe:
#0  0xb6dfbef8 in __libc_waitpid (pid=875, stat_loc=0xbef63208, options=0)
at ../sysdeps/unix/sysv/linux/waitpid.c:40
#1  0x000b716c in ?? ()
/home/pi/dev/gdb-7.7.1+dfsg/gdb/frame.c:472: internal-error: get_frame_id:
Assertion `fi->this_id.p' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) [answered Y; input not from terminal]
/home/pi/dev/gdb-7.7.1+dfsg/gdb/frame.c:472: internal-error: get_frame_id:
Assertion `fi->this_id.p' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) [answered Y; input not from terminal]

=================================================================
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.
=================================================================



More information about the Mono-list mailing list