[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: