[plt-scheme] mred + OpenGL crashes

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Jan 22 19:46:04 EST 2007

At Mon, 22 Jan 2007 21:32:49 +0000, dave wrote:
> I have some questions about OpenGL use in mred, I'm new to PLT, so
> hopefully this is something I've overlooked or I'm being silly. I'm
> running version 352 on linux (ubuntu breezy), but I get reports of the
> same problems on OSX too.

I'm not aware of any OpenGL problems on Mac OS X, but definitely report
bugs.

I don't use OpenGL in MrEd a lot myself, but I use it occasionally
(usually under Mac OS X, but sometimes on Windows or Linux), and I can
run the OpenGL examples multiple times in DrScheme.

In the case of Linux, we've had reports of problems, but we've also had
trouble distinguishing between MrEd bugs and OpenGL-driver bugs. We've
certainly run into OpenGL problems where upgrading or replacing the
driver fixed the problem (even with popular Linux distributions). But
others cases have been less clear, and usually the problem is that
things work ok on the hardware that I have access to. So, again, bug
reports are welcome.

> The reason for this is that I have also embedded mzscheme into a glut
> application, and I had similar (although not quite so severe) problems.
> I tracked this down to the fact I was calling load-extension after
> initialising and setting up the glut window. Putting the load-extension
> call before any other OpenGL related setup fixed the problem completely.
> Presumably this is a dlopen linking order issue, maybe there are linking
> flags I need to set?

Was it that libraries used by OpenGL were introducing bindings that
shadow others used by your extension? Maybe C-library version
mismatches, or something about initializing OS-level threads? Or was it
a memory-management problem that happened to show up with different
load orders?

".mredrc" is certainly loaded after the windowing system is
initialized. Short of re-linking MrEd, I can think of a way to load an
extension earlier.

Matthew



Posted on the users mailing list.