SVG creates corrupt JPG and SegFaults (let's call it arcane)
Posted: 2010-12-03T08:00:56-07:00
I tried posting this in the Users forums, and then decided that this probably fell into the 'arcane' area of usage and might get some help here instead. Here's my original post:
viewtopic.php?f=1&t=17562
I've now gotten to the point where I'm doing things well beyond my comfort zone in Linux trying to get to the root of what's causing the segmentation fault. I've learned very little about using strace, etc. and almost have it narrowed down, but I'm not sure what I'll do even if I do narrow it down. It's been a very long time since my C days. However, here's where I'm at:
It looks like something is failing after the UnmapBlob in blob.c (line 3906) (this cold TOTALLY be a red-herring). From what I can tell using strace, that succeeds and something shortly after it fails. I don't have any sort of IDE or debugger that I can step through the code on, so this has all been deduced with strace and -debug all. Here's the end of my strace (FWIW):
Oddly, if I include an <image> tag in the SVG, regardless of how it's rendered, it does NOT segfault. Here's its strace:
Anyone have any ideas? Shots in the dark? Recommendations on what I can run to get closer to what's causing the segfault so I can avoid it/patch it?
posterChild
viewtopic.php?f=1&t=17562
I've now gotten to the point where I'm doing things well beyond my comfort zone in Linux trying to get to the root of what's causing the segmentation fault. I've learned very little about using strace, etc. and almost have it narrowed down, but I'm not sure what I'll do even if I do narrow it down. It's been a very long time since my C days. However, here's where I'm at:
It looks like something is failing after the UnmapBlob in blob.c (line 3906) (this cold TOTALLY be a red-herring). From what I can tell using strace, that succeeds and something shortly after it fails. I don't have any sort of IDE or debugger that I can step through the code on, so this has all been deduced with strace and -debug all. Here's the end of my strace (FWIW):
Code: Select all
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
3731) = 3731
close(4) = 0
munmap(0x2b8339327000, 4096) = 0
munmap(0x2b8339de1000, 13381632) = 0
munmap(0x2b833911e000, 2133784) = 0
munmap(0x2b833839f000, 2158368) = 0
munmap(0x3891000000, 2304352) = 0
munmap(0x3890c00000, 2190296) = 0
munmap(0x3890800000, 2578928) = 0
munmap(0x388b400000, 2308352) = 0
munmap(0x2b83385bb000, 2331992) = 0
munmap(0x388bc00000, 3395256) = 0
munmap(0x388f000000, 2339696) = 0
munmap(0x388e400000, 2537704) = 0
munmap(0x388d000000, 2112120) = 0
munmap(0x3892e00000, 2131912) = 0
munmap(0x3893200000, 2525912) = 0
munmap(0x388f800000, 2242264) = 0
munmap(0x388c800000, 2224928) = 0
munmap(0x388fc00000, 2160704) = 0
munmap(0x3889400000, 2336968) = 0
munmap(0x388a400000, 2407792) = 0
munmap(0x3888800000, 3475344) = 0
munmap(0x3890000000, 2106240) = 0
munmap(0x388f400000, 2141000) = 0
munmap(0x388ec00000, 2105616) = 0
munmap(0x388cc00000, 2160784) = 0
munmap(0x3892000000, 2131736) = 0
munmap(0x3888400000, 2194096) = 0
munmap(0x3889000000, 2111000) = 0
munmap(0x388a000000, 2283888) = 0
munmap(0x388ac00000, 2706624) = 0
munmap(0x388c000000, 2247432) = 0
munmap(0x388c400000, 2128592) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Oddly, if I include an <image> tag in the SVG, regardless of how it's rendered, it does NOT segfault. Here's its strace:
Code: Select all
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1621) = 1621
close(4) = 0
munmap(0x2b76cf793000, 4096) = 0
munmap(0x2b76d048e000, 13381632) = 0
munmap(0x2b76cf58a000, 2133784) = 0
munmap(0x2b76ce3a0000, 2158368) = 0
munmap(0x3891000000, 2304352) = 0
munmap(0x388b400000, 2308352) = 0
munmap(0x2b76ce5bc000, 2331992) = 0
munmap(0x3892e00000, 2131912) = 0
munmap(0x3893200000, 2525912) = 0
munmap(0x388f800000, 2242264) = 0
munmap(0x388cc00000, 2160784) = 0
munmap(0x3892000000, 2131736) = 0
writev(13, [{"GIOP\1\2\1\5\0\0\0\0", 12}], 1) = 12
close(13) = 0
writev(5, [{"GIOP\1\2\1\5\0\0\0\0", 12}], 1) = 12
close(5) = 0
close(12) = 0
close(11) = 0
unlink("/tmp/orbit-posterChild/linc-311d-0-24543cd81aa89") = 0
close(6) = 0
exit_group(0) = ?
posterChild