Right, against all recommendation and common sense, I am attempting to run Panda3D 1.8.0 with Visual Studio 2010. I’ve had good times when compiling it in 2008, but that version does not support any 0x features, which our new codebase requires.
To avoid the thirdparty library issues (until I get a bare-bones version working), I’ve ran makepanda with only the absolute minimum settings (–nothing --use-gl --optimize 1).
Everything works well, nothing suspicious, but when I try a bare minimum program, it crashes on framework.open_window(), with the CRT debugger reporting a corrupt heap. Furthermore, the console is filled with messages like:
Non utf-8 byte in string: 0xff, string is ' ⁿ ☻åwê↓) ) !å'
Various permutations on this error occur with all the different --optimize values and debug/release configurations.
Here is the call stack:
msvcr90d.dll!5fea0d3b()
[Frames below may be incorrect and/or missing, no symbols loaded for msvcr90d.dll]
msvcr90d.dll!5fea09e0()
msvcr90d.dll!5fea8990()
> libp3dtool_d.dll!MemoryHook::heap_free_array(void * ptr) Line 377 + 0xc bytes C++
libpandaexpress_d.dll!MemoryUsage::heap_free_array(void * ptr) Line 363 + 0xf bytes C++
libpandagl_d.dll!GLGraphicsStateGuardian::reset() Line 746 + 0x1d bytes C++
libpandagl_d.dll!wglGraphicsStateGuardian::reset() Line 458 C++
libpanda_d.dll!GraphicsStateGuardian::reset_if_new() Line 845 + 0x12 bytes C++
libpandagl_d.dll!wglGraphicsWindow::open_window() Line 309 + 0xb bytes C++
libpanda_d.dll!GraphicsWindow::set_properties_now(WindowProperties & properties) Line 644 + 0x12 bytes C++
libp3windisplay_d.dll!WinGraphicsWindow::set_properties_now(WindowProperties & properties) Line 273 + 0xf bytes C++
libpanda_d.dll!GraphicsWindow::process_events() Line 604 + 0x19 bytes C++
libp3windisplay_d.dll!WinGraphicsWindow::process_events() Line 224 + 0xb bytes C++
libpanda_d.dll!GraphicsEngine::process_events(const ov_set<PointerTo<GraphicsOutput>,IndirectLess<GraphicsOutput> > & wlist, Thread * current_thread) Line 1616 + 0x25 bytes C++
libpanda_d.dll!GraphicsEngine::WindowRenderer::do_windows(GraphicsEngine * engine, Thread * current_thread) Line 2561 C++
libpanda_d.dll!GraphicsEngine::open_windows() Line 955 C++
libpanda_d.dll!GraphicsEngine::make_output(GraphicsPipe * pipe, const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & name, int sort, const FrameBufferProperties & fb_prop, const WindowProperties & win_prop, int flags, GraphicsStateGuardian * gsg, GraphicsOutput * host) Line 425 C++
libp3framework_d.dll!WindowFramework::open_window(const WindowProperties & props, int flags, GraphicsEngine * engine, GraphicsPipe * pipe, GraphicsStateGuardian * gsg) Line 161 + 0x36 bytes C++
libp3framework_d.dll!PandaFramework::open_window(const WindowProperties & props, int flags, GraphicsPipe * pipe, GraphicsStateGuardian * gsg) Line 453 + 0x28 bytes C++
libp3framework_d.dll!PandaFramework::open_window(GraphicsPipe * pipe, GraphicsStateGuardian * gsg) Line 419 + 0x1e bytes C++
libp3framework_d.dll!PandaFramework::open_window() Line 371 + 0xe bytes C++
panda_test.exe!main(int argc, char * * argv) Line 22 C++
panda_test.exe!__tmainCRTStartup() Line 555 + 0x19 bytes C
panda_test.exe!mainCRTStartup() Line 371 C
kernel32.dll!74eb339a()
ntdll.dll!77799ef2()
ntdll.dll!77799ec5()
One last thing I noted, in the list of loaded modules, there is both the vc100 dlls (e.g. msvcr100d) AND the vc90 ones (e.g. msvcr90d). Is this a Very Bad Thing?
Thanks in advance for anything that could be even vaguely helpful