This is happening with the 0.4.4rc5 build. I'm running on a
two-monitor setup, with one of the monitors serving as a
full-screen stimulus display. Both monitors are driven by a single
NVIDIA GeForce 7300 GT graphics card. I'm running Mac OS X
10.6.3.
I can start up the client and server and load and run an
experiment with no problem. However, if I close the experiment and
load another (or the same experiment again), the stimulus display
goes black, like it's been shut off. If I then close and load once
more, the stimulus display is back to normal. I can repeat this
failure/success pattern indefinitely. The behavior does not depend
on the experiment(s) used.
Coincident with the display black out, the server spits out the
following messages:
2010-05-27 15:00:31.817 MWServer[315:4a03] originalDisplayMode = {
BitsPerPixel = 32;
BitsPerSample = 8;
Height = 1050;
IODisplayModeID = 127;
IOFlags = 7;
Mode = 62;
RefreshRate = 61;
SamplesPerPixel = 3;
UsableForDesktopGUI = 1;
Width = 1680;
kCGDisplayBytesPerRow = 7168;
kCGDisplayModeIsSafeForHardware = 1;
}
Thu May 27 15:00:31 dicarlo23.mit.edu MWServer[315] <Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
Thu May 27 15:00:31 dicarlo23.mit.edu MWServer[315] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
2010-05-27 15:00:31.833 MWServer[315:4a03] invalid fullscreen drawable
Running through the same scenario in gdb and breaking on
CGErrorBreakpoint yields the following backtrace:
0x00007fff8247d883 in CGErrorBreakpoint ()
0x00007fff82507caa in CGSGlobalErrorv ()
0x00007fff8236c5ef in CGSGetSurfaceBounds ()
0x00007fff80c83782 in CGLSetOffScreen ()
0x00007fff80c83ac5 in CGLSetFullScreen ()
0x00007fff85be7537 in -[NSOpenGLContext setFullScreen] ()
0x0000000100089587 in mw::OpenGLContextManager::newFullScreenContext ()
0x0000000100059055 in mw::prepareStimulusDisplay ()
0x000000010004dee8 in mw::ExperimentFactory::createObject ()
0x000000010002e339 in mw::ComponentRegistry::createNewObject ()
0x000000010002e596 in mw::ComponentRegistry::registerNewObject ()
0x0000000100156424 in mw::XMLParser::_processGenericCreateDirective ()
0x000000010014b5a3 in mw::XMLParser::_processCreateDirective ()
0x000000010014bf24 in mw::XMLParser::_processNode ()
0x00000001001576e2 in mw::XMLParser::parse ()
0x000000010005b374 in mw::loadExperimentFromXMLParser ()
0x0000000100112765 in mw::StandardSystemEventHandler::handleSystemEvent ()
0x0000000100114159 in mw::StandardSystemEventHandler::handleEvent ()
0x00000001001470da in mw::EventListener::service ()
0x0000000100146c47 in readReader ()
0x00000001001480f8 in boost::_bi::list1<boost::_bi::value<boost::shared_ptr<mw::EventListener> > >::operator()<void*, void* (*)(boost::shared_ptr<mw::EventListener> const&), boost::_bi::list0> ()
0x0000000100148136 in boost::_bi::bind_t<void*, void* (*)(boost::shared_ptr<mw::EventListener> const&), boost::_bi::list1<boost::_bi::value<boost::shared_ptr<mw::EventListener> > > >::operator() ()
0x0000000100148155 in boost::detail::function::function_obj_invoker0<boost::_bi::bind_t<void*, void* (*)(boost::shared_ptr<mw::EventListener> const&), boost::_bi::list1<boost::_bi::value<boost::shared_ptr<mw::EventListener> > > >, void*>::invoke ()
0x00000001149d6edf in boost::function0<void*>::operator() ()
0x00000001149d2121 in zen_scheduler::zenScheduledExecutionThread ()
0x00007fff845218b6 in _pthread_start ()
0x00007fff84521769 in thread_start ()