Actually, crashes do not look random, they always happen at the same place. Here is a couple of examples.
1st:
GNU gdb (Raspbian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from cgminer...done.
[New LWP 12843]
[New LWP 12852]
[New LWP 12847]
[New LWP 12850]
[New LWP 12844]
[New LWP 12849]
[New LWP 12848]
[New LWP 12846]
[New LWP 12851]
[New LWP 12838]
[New LWP 12839]
[New LWP 12841]
[New LWP 12840]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Core was generated by `cgminer -o stratum+tcp://eu.stratum.bitcoin.cz:3333 -u cameloid.worker2 -p x --'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0004e110 in usb_perform_transfer (cgpu=0xfbec88, intinfo=, epinfo=0, data=0x0, length=-1166715880, transferred=0x1, timeout=0, mode=0,
cmd=C_REJECTED, seq=0, cancellable=24, tt=true, usbdev=, usbdev=) at usbutils.c:3097
3097 else if ((endpoint & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_IN && *transferred)
(gdb) #0 0x0004e110 in usb_perform_transfer (cgpu=0xfbec88, intinfo=, epinfo=0, data=0x0, length=-1166715880, transferred=0x1, timeout=0, mode=0,
cmd=C_REJECTED, seq=0, cancellable=24, tt=true, usbdev=, usbdev=) at usbutils.c:3097
callback_timeout =
err_retries =
dev_handle = 0xf882b0
usb_epinfo =
ut = {cgsem = {__size = "\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000", __align = 0}, transfer = 0x6fd0051c, cancellable = false, list = {
next = 0x0, prev = 0x0}}
endpoint = 129 '\201'
interrupt =
err = 0
errn = 110
tv_start = {tv_sec = 1446167091, tv_usec = 182376}
tv_finish = {tv_sec = 1446167091, tv_usec = 217754}
buf = "\000\000\000\000\205\361\340N\031\234\351\\", '\000'
#1 0x00000000 in ?? ()
No symbol table info available.
(gdb) quit
2nd:
GNU gdb (Raspbian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
.
Find the GDB manual and other documentation resources online at:
.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from cgminer...done.
[New LWP 13102]
[New LWP 13106]
[New LWP 13099]
[New LWP 13107]
[New LWP 13101]
[New LWP 13100]
[New LWP 13103]
[New LWP 13105]
[New LWP 13111]
[New LWP 13110]
[New LWP 13109]
[New LWP 13108]
[New LWP 13098]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Core was generated by `cgminer -o stratum+tcp://eu.stratum.bitcoin.cz:3333 -u cameloid.worker2 -p x --'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0004e110 in usb_perform_transfer (cgpu=0x1622c88, intinfo=, epinfo=0, data=0x0, length=0, transferred=0x0, timeout=0, mode=0, cmd=C_REJECTED,
seq=0, cancellable=false, tt=false, usbdev=, usbdev=) at usbutils.c:3097
3097 else if ((endpoint & LIBUSB_ENDPOINT_DIR_MASK) == LIBUSB_ENDPOINT_IN && *transferred)
(gdb) #0 0x0004e110 in usb_perform_transfer (cgpu=0x1622c88, intinfo=, epinfo=0, data=0x0, length=0, transferred=0x0, timeout=0, mode=0, cmd=C_REJECTED,
seq=0, cancellable=false, tt=false, usbdev=, usbdev=) at usbutils.c:3097
callback_timeout =
err_retries =
dev_handle = 0x15ec2b0
usb_epinfo =
ut = {cgsem = {__size = "\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000", __align = 0}, transfer = 0x6fd0051c, cancellable = false, list = {
next = 0x0, prev = 0x0}}
endpoint = 129 '\201'
interrupt =
err = 0
errn = 110
tv_start = {tv_sec = 1446169096, tv_usec = 721899}
tv_finish = {tv_sec = 1446169096, tv_usec = 774762}
buf = "\000\354A\270\231\227\212~1\221\261\222\370?\002\000\b\000\000\000\b\000\000\000\004\000\000\000\004\000\000\000\006\000\000\000\064\000\000\000\064\000\001\000\064\000\001\000 \001\000\000 \001\000\000\005\000\000\000\004\000\000\000\003\000\000\000T\001\000\000T\001\001\000T\001\001\000\031\000\000\000\031\000\000\000\004\000\000\000\001\000\000\000\001\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\004@\001\000\004@\001\000\005\000\000\000\000\000\001\000\001\000\000\000\374N\001\000\374N\003\000\374N\003\000\324\003\000\000\300\n\000\000\006\000\000\000\000\000\001\000\002\000\000\000\bO\001\000\bO\003\000\bO\003\000\370\000\000\000\370\000\000\000\006\000\000\000\004\000\000\000\004\000\000\000p\001\000\000"...
#1 0x00000000 in ?? ()
No symbol table info available.
(gdb) quit