Re: Where is libgl?
>>>>> "Joseph" == Joseph Carter <knghtbrd@debian.org> writes:
Ben> Joseph, I'm not trying to step on your toes here! I agree
Ben> that Mesa 3.1 should get into the archives -- but I'm just
Ben> trying (like you) to say that it should NOT replace Mesa 3.0.
Joseph> Actually, I think it should.. Probably not as the package
Joseph> stands right now though. For backwards compatibility ot
Joseph> needs to have a libMesaGL.so.3 symlink...
At the very least, yes. But I'm still unhappy that NURBS code
will break.
Joseph> As for the problem you outlined, I'll try to fix it if you
Joseph> can provide me with a fairly simple piece of code which
Joseph> will seg under 3.1 but works under 3.0... If it's been
Joseph> fixed in 3.2 I'll be happy to backport a fix or at the
Joseph> very least try to isolate the problem with it.
Grumble, grumble.
The code in question that breaks Mesa 3.1 for me is at:
http://csl.cse.ucsc.edu/~ben/xmms/
It's been tested and works with Mesa 3.0 and Solaris OpenGL. It causes
segfaults internal to Mesa 3.1. I tried to simplify it, and the result
of that is at:
http://csl.cse.ucsc.edu/~ben/break.c
Of course, this much-simplified code works just fine and dandy under
both 3.0 and 3.1, with no crashes at all. :) Murphy strikes again!
Since the non-simplified code uses threads all over the place, I'm
assuming the threading behavior of Mesa has changed in between 3.0 and
3.1. (And of course I won't rule out a bug on my part, I'm certainly
not perfect -- but it does run fine on Mesa 3.0 *and* Solaris..)
For what it's worth, here's where I get a segfault inside Mesa:
Program received signal SIGSEGV, Segmentation fault.
0x4080146b in gl_make_normal_cullmask (VB=Cannot access memory at address 0x11.
) at vbcull.c:966
966 if (VB->Flag[++i] & (VERT_NORM|VERT_END_VB)) {
(gdb) l
961 }
962 }
963 } else {
964 VB->NormCullMask[VB->Start] = ~0;
965 for (i = VB->Start ;; )
966 if (VB->Flag[++i] & (VERT_NORM|VERT_END_VB)) {
967 VB->NormCullMask[i] = ~0;
968 if (VB->Flag[i] & VERT_END_VB) return;
969 }
970 }
(gdb) print i
$1 = 1404
(gdb) print VB->Flag[i]
Cannot access memory at address 0x81ed000.
(gdb) print VB->Flag[i - 1]
$2 = 0
Maybe this can help you. (It always crashes inside Mesa here at the
same place in 3.1, and never at all in 3.0.) Or maybe you can get the
Mesa team to respond to a bug report, 'cause they ignored mine. :)
Ben
--
Brought to you by the letters M and I and the number 15.
"Do you wish to see our *surprising toys*? No! Do not!"
Debian GNU/Linux maintainer of Gimp and GTK+ -- http://www.debian.org/
Reply to: