[PD] [GEM] pix_mano and latest linux kernels

Claude Heiland-Allen claude at mathr.co.uk
Sun Oct 14 22:42:39 CEST 2012


On 14/10/12 21:23, Jaime Oliver wrote:
> OK, so I got it running and the crash is always in line 727:
>
> Program received signal SIGSEGV, Segmentation fault.
> 0x00007fffe18f8418 in pix_mano::processGrayImage (this=<optimized
> out>, image=...) at pix_mano.cpp:727
> 727	              if (base[chGray + xcoord] == 80) { // if we find a point
> (gdb) watchdog: signaling pd...
> watchdog: signaling pd...
>
> Now, I know where that is, but I just don't understand how there can
> be a problem with this. Or what the problem is for that matter.

base could be null or other invalid memory address or (chGray + xcoord) 
could be outside valid memory when offset by base.

> I mean, I am merely doing a test that the external does all the time.

You're doing several things in that line: computing "(chGray + xcoord) * 
sizeof(array type of base)" then reading a number of bytes from that 
memory location, then comparing it to 80, and then testing the result. 
The "reading from that memory location" part is what generally causes 
SIGSEGV.

> Furthermore, it doesn't crash in earlier linux versions...

Assuming identical Gem version (otherwise it could be internal Gem 
changes breaking previously sensible code):

Probably coincidence, unless xcoord is coming from some kernel driver, 
or the memory layout is different in such a way that a previously masked 
bug now causes problems.

> Any suggestions?

first, run with -nrt to avoid watchdog spam.

Then in gdb, "info locals", "print base", "print xcoord", "help", etc


Claude
-- 
http://mathr.co.uk



More information about the Pd-list mailing list