[Bf-committers] Blender crash on startup

Wander Lairson Costa wander.lairson at gmail.com
Tue Mar 20 13:35:18 CET 2012


I tried to track when this crash started to occur for me and then I
found out the crash started to occur at commit r44375, which added the
following:

--- a/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -907,6 +907,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object*
blenderobj, KX_Scene* scene,
                return meshobj;
        // Get DerivedMesh data
        DerivedMesh *dm = CDDM_from_mesh(mesh, blenderobj);
+       DM_ensure_tessface(dm);

        MVert *mvert = dm->getVertArray(dm);
        int totvert = dm->getNumVerts(dm);

Does anyone know what's the role of the function DM_ensure_tessface?

Thanks,
Wander

2012/3/16 Wander Lairson Costa <wander.lairson at gmail.com>:
> Hello,
>
> I am using latest svn update and building blender with like so:
>
> cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/opt/blender
> -DWITH_PLAYER=ON ../blender
>
> But at start of blenderplayer, I am experiencing random crashes,
> always coming from GPU_render_text function. It feels like tface
> parameter is a bad pointer. I have valgrind output and core file, but
> I don't know how you guys usually exchange this kind of files, as core
> file is a bit big.
>
> Here is the valgrind output (online the last part of the file):
>
> ==26886== Invalid read of size 4
> ==26886==    at 0x90D9841: GPU_render_text (gpu_draw.c:94)
> ==26886==    by 0x8BB1E92: GPC_RenderTools::RenderText(int,
> RAS_IPolyMaterial*, float*, float*, float*, float*, int)
> (GPC_RenderTools.cpp:428)
> ==26886==    by 0x8FC891D:
> RAS_OpenGLRasterizer::IndexPrimitives_3DText(RAS_MeshSlot&,
> RAS_IPolyMaterial*, RAS_IRenderTools*) (RAS_OpenGLRasterizer.cpp:671)
> ==26886==    by 0x8FB5490:
> RAS_MaterialBucket::RenderMeshSlot(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*, RAS_MeshSlot&)
> (RAS_MaterialBucket.cpp:643)
> ==26886==    by 0x8FAAB72:
> RAS_BucketManager::RenderAlphaBuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:161)
> ==26886==    by 0x8FAADF3:
> RAS_BucketManager::Renderbuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:236)
> ==26886==    by 0x8F29C18: KX_Scene::RenderBuckets(MT_Transform
> const&, RAS_IRasterizer*, RAS_IRenderTools*) (KX_Scene.cpp:1616)
> ==26886==    by 0x8EF0A7A: KX_KetsjiEngine::RenderFrame(KX_Scene*,
> KX_Camera*) (KX_KetsjiEngine.cpp:1321)
> ==26886==    by 0x8EEF4DD: KX_KetsjiEngine::Render() (KX_KetsjiEngine.cpp:883)
> ==26886==    by 0x8BA96B8:
> GPG_Application::processEvent(GHOST_IEvent*) (GPG_Application.cpp:485)
> ==26886==    by 0x8BC836E:
> GHOST_EventManager::dispatchEvent(GHOST_IEvent*)
> (GHOST_EventManager.cpp:116)
> ==26886==    by 0x8BC840F: GHOST_EventManager::dispatchEvent()
> (GHOST_EventManager.cpp:133)
> ==26886==  Address 0x5cd4048 is not stack'd, malloc'd or (recently) free'd
> ==26886==
> ==26886== Invalid read of size 4
> ==26886==    at 0x90D984F: GPU_render_text (gpu_draw.c:95)
> ==26886==    by 0x8BB1E92: GPC_RenderTools::RenderText(int,
> RAS_IPolyMaterial*, float*, float*, float*, float*, int)
> (GPC_RenderTools.cpp:428)
> ==26886==    by 0x8FC891D:
> RAS_OpenGLRasterizer::IndexPrimitives_3DText(RAS_MeshSlot&,
> RAS_IPolyMaterial*, RAS_IRenderTools*) (RAS_OpenGLRasterizer.cpp:671)
> ==26886==    by 0x8FB5490:
> RAS_MaterialBucket::RenderMeshSlot(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*, RAS_MeshSlot&)
> (RAS_MaterialBucket.cpp:643)
> ==26886==    by 0x8FAAB72:
> RAS_BucketManager::RenderAlphaBuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:161)
> ==26886==    by 0x8FAADF3:
> RAS_BucketManager::Renderbuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:236)
> ==26886==    by 0x8F29C18: KX_Scene::RenderBuckets(MT_Transform
> const&, RAS_IRasterizer*, RAS_IRenderTools*) (KX_Scene.cpp:1616)
> ==26886==    by 0x8EF0A7A: KX_KetsjiEngine::RenderFrame(KX_Scene*,
> KX_Camera*) (KX_KetsjiEngine.cpp:1321)
> ==26886==    by 0x8EEF4DD: KX_KetsjiEngine::Render() (KX_KetsjiEngine.cpp:883)
> ==26886==    by 0x8BA96B8:
> GPG_Application::processEvent(GHOST_IEvent*) (GPG_Application.cpp:485)
> ==26886==    by 0x8BC836E:
> GHOST_EventManager::dispatchEvent(GHOST_IEvent*)
> (GHOST_EventManager.cpp:116)
> ==26886==    by 0x8BC840F: GHOST_EventManager::dispatchEvent()
> (GHOST_EventManager.cpp:133)
> ==26886==  Address 0x5cd4048 is not stack'd, malloc'd or (recently) free'd
> ==26886==
> ==26886== Invalid read of size 2
> ==26886==    at 0x90D9AF9: GPU_render_text (gpu_draw.c:112)
> ==26886==    by 0x8BB1E92: GPC_RenderTools::RenderText(int,
> RAS_IPolyMaterial*, float*, float*, float*, float*, int)
> (GPC_RenderTools.cpp:428)
> ==26886==    by 0x8FC891D:
> RAS_OpenGLRasterizer::IndexPrimitives_3DText(RAS_MeshSlot&,
> RAS_IPolyMaterial*, RAS_IRenderTools*) (RAS_OpenGLRasterizer.cpp:671)
> ==26886==    by 0x8FB5490:
> RAS_MaterialBucket::RenderMeshSlot(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*, RAS_MeshSlot&)
> (RAS_MaterialBucket.cpp:643)
> ==26886==    by 0x8FAAB72:
> RAS_BucketManager::RenderAlphaBuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:161)
> ==26886==    by 0x8FAADF3:
> RAS_BucketManager::Renderbuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:236)
> ==26886==    by 0x8F29C18: KX_Scene::RenderBuckets(MT_Transform
> const&, RAS_IRasterizer*, RAS_IRenderTools*) (KX_Scene.cpp:1616)
> ==26886==    by 0x8EF0A7A: KX_KetsjiEngine::RenderFrame(KX_Scene*,
> KX_Camera*) (KX_KetsjiEngine.cpp:1321)
> ==26886==    by 0x8EEF4DD: KX_KetsjiEngine::Render() (KX_KetsjiEngine.cpp:883)
> ==26886==    by 0x8BA96B8:
> GPG_Application::processEvent(GHOST_IEvent*) (GPG_Application.cpp:485)
> ==26886==    by 0x8BC836E:
> GHOST_EventManager::dispatchEvent(GHOST_IEvent*)
> (GHOST_EventManager.cpp:116)
> ==26886==    by 0x8BC840F: GHOST_EventManager::dispatchEvent()
> (GHOST_EventManager.cpp:133)
> ==26886==  Address 0x5cd404e is not stack'd, malloc'd or (recently) free'd
> ==26886==
> ==26886== Invalid read of size 4
> ==26886==    at 0x8E38702: matrixGlyph (bmfont.c:262)
> ==26886==    by 0x90D9B91: GPU_render_text (gpu_draw.c:120)
> ==26886==    by 0x8BB1E92: GPC_RenderTools::RenderText(int,
> RAS_IPolyMaterial*, float*, float*, float*, float*, int)
> (GPC_RenderTools.cpp:428)
> ==26886==    by 0x8FC891D:
> RAS_OpenGLRasterizer::IndexPrimitives_3DText(RAS_MeshSlot&,
> RAS_IPolyMaterial*, RAS_IRenderTools*) (RAS_OpenGLRasterizer.cpp:671)
> ==26886==    by 0x8FB5490:
> RAS_MaterialBucket::RenderMeshSlot(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*, RAS_MeshSlot&)
> (RAS_MaterialBucket.cpp:643)
> ==26886==    by 0x8FAAB72:
> RAS_BucketManager::RenderAlphaBuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:161)
> ==26886==    by 0x8FAADF3:
> RAS_BucketManager::Renderbuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:236)
> ==26886==    by 0x8F29C18: KX_Scene::RenderBuckets(MT_Transform
> const&, RAS_IRasterizer*, RAS_IRenderTools*) (KX_Scene.cpp:1616)
> ==26886==    by 0x8EF0A7A: KX_KetsjiEngine::RenderFrame(KX_Scene*,
> KX_Camera*) (KX_KetsjiEngine.cpp:1321)
> ==26886==    by 0x8EEF4DD: KX_KetsjiEngine::Render() (KX_KetsjiEngine.cpp:883)
> ==26886==    by 0x8BA96B8:
> GPG_Application::processEvent(GHOST_IEvent*) (GPG_Application.cpp:485)
> ==26886==    by 0x8BC836E:
> GHOST_EventManager::dispatchEvent(GHOST_IEvent*)
> (GHOST_EventManager.cpp:116)
> ==26886==  Address 0xe0 is not stack'd, malloc'd or (recently) free'd
> ==26886==
> ==26886==
> ==26886== Process terminating with default action of signal 11
> (SIGSEGV): dumping core
> ==26886==  Access not within mapped region at address 0xE0
> ==26886==    at 0x8E38702: matrixGlyph (bmfont.c:262)
> ==26886==    by 0x90D9B91: GPU_render_text (gpu_draw.c:120)
> ==26886==    by 0x8BB1E92: GPC_RenderTools::RenderText(int,
> RAS_IPolyMaterial*, float*, float*, float*, float*, int)
> (GPC_RenderTools.cpp:428)
> ==26886==    by 0x8FC891D:
> RAS_OpenGLRasterizer::IndexPrimitives_3DText(RAS_MeshSlot&,
> RAS_IPolyMaterial*, RAS_IRenderTools*) (RAS_OpenGLRasterizer.cpp:671)
> ==26886==    by 0x8FB5490:
> RAS_MaterialBucket::RenderMeshSlot(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*, RAS_MeshSlot&)
> (RAS_MaterialBucket.cpp:643)
> ==26886==    by 0x8FAAB72:
> RAS_BucketManager::RenderAlphaBuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:161)
> ==26886==    by 0x8FAADF3:
> RAS_BucketManager::Renderbuckets(MT_Transform const&,
> RAS_IRasterizer*, RAS_IRenderTools*) (RAS_BucketManager.cpp:236)
> ==26886==    by 0x8F29C18: KX_Scene::RenderBuckets(MT_Transform
> const&, RAS_IRasterizer*, RAS_IRenderTools*) (KX_Scene.cpp:1616)
> ==26886==    by 0x8EF0A7A: KX_KetsjiEngine::RenderFrame(KX_Scene*,
> KX_Camera*) (KX_KetsjiEngine.cpp:1321)
> ==26886==    by 0x8EEF4DD: KX_KetsjiEngine::Render() (KX_KetsjiEngine.cpp:883)
> ==26886==    by 0x8BA96B8:
> GPG_Application::processEvent(GHOST_IEvent*) (GPG_Application.cpp:485)
> ==26886==    by 0x8BC836E:
> GHOST_EventManager::dispatchEvent(GHOST_IEvent*)
> (GHOST_EventManager.cpp:116)
> ==26886==  If you believe this happened as a result of a stack
> ==26886==  overflow in your program's main thread (unlikely but
> ==26886==  possible), you can try to increase the size of the
> ==26886==  main thread stack using the --main-stacksize= flag.
> ==26886==  The main thread stack size used in this run was 8388608.
>
>
> --
> Best Regards,
> Wander Lairson Costa


More information about the Bf-committers mailing list