[BUG] - *** stack smashing detected ***: terminated Aborted (core dumped)

#215 · open · 6 comments

View on GitHub ↗

SimonBirrell

I appreciate that this may be a problem unique to my machine: Ubuntu 24.04 AMD Ryzen™ 5 7640U w/ Radeon™ 760M Graphics × 12 Easy3D is working fine via the Python bindings for pointcloud manipulation. Any sort of visualization though, be it through the renderer or viewer, gives a core dump. For example: renderer = easy3d.OffScreen() model_pathname = easy3d.resource_directory() + "/data/bunny.ply" model = easy3d.PointCloudIO.load(model_pathname) renderer.add_model(model) renderer.render(image_pathname) This produces the output: W 06/08/2025 00:10:23.836 viewer.cpp:304] Loading /home/simonbirrell/.local/share/mise/installs/python/3.13.2/lib/python3.13/site-packages/easy3d/resources/data/bunny.ply W 06/08/2025 00:10:23.844 point_cloud_io_ply.cpp:81] I 06/08/2025 00:10:23.844 point_cloud_io.cpp:75] I 06/08/2025 00:10:23.844 viewer.cpp:1304] E 06/08/2025 00:10:23.858 framebuffer_object.cpp:678] *** stack smashing detected ***: terminated Aborted (core dumped) I suspect it's something to do with OpenGLm as lline 678 of framebuffer_object.cpp looks like this: case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: LOG(ERROR) << "Framebuffer incomplete, missing attachment."; break; I'm running the open-source AMD drivers. I tried installing the proprietary AMD drivers, messed up, and spent hours painfully recovering my operating system. I'm really just checking in to see if it's anything anyone else has already seen, before I return to doing difficult and possibly pointless upgrades! This is the latest release Easy3D-v2.6.1, installed as a wheel. Thanks! Simon

Comments

LiangliangNan

Did you encounter the same issue when running other examples/tutorials? Best, -- Liangliang ________________________________ From: Simon Birrell ***@***.***> Sent: Wednesday, August 6, 2025 7:19:39 AM To: LiangliangNan/Easy3D ***@***.***> Cc: Subscribed ***@***.***> Subject: [LiangliangNan/Easy3D] [BUG] - *** stack smashing detected ***: terminated Aborted (core dumped) (Issue #215) [https://avatars.githubusercontent.com/u/1873370?s=20&v=4]SimonBirrell created an issue (LiangliangNan/Easy3D#215)<https://github.com/LiangliangNan/Easy3D/issues/215> I appreciate that this may be a problem unique to my machine: Ubuntu 24.04 AMD Ryzen™ 5 7640U w/ Radeon™ 760M Graphics × 12 Easy3D is working fine via the Python bindings for pointcloud manipulation. Any sort of visualization though, be it through the renderer or viewer, gives a core dump. For example: renderer = easy3d.OffScreen() model_pathname = easy3d.resource_directory() + "/data/bunny.ply" model = easy3d.PointCloudIO.load(model_pathname) renderer.add_model(model) renderer.render(image_pathname) This produces the output: W 06/08/2025 00:10:23.836 viewer.cpp:304] Loading /home/simonbirrell/.local/share/mise/installs/python/3.13.2/lib/python3.13/site-packages/easy3d/resources/data/bunny.ply W 06/08/2025 00:10:23.844 point_cloud_io_ply.cpp:81] I 06/08/2025 00:10:23.844 point_cloud_io.cpp:75] I 06/08/2025 00:10:23.844 viewer.cpp:1304] E 06/08/2025 00:10:23.858 framebuffer_object.cpp:678] *** stack smashing detected ***: terminated Aborted (core dumped) I suspect it's something to do with OpenGLm as lline 678 of framebuffer_object.cpp looks like this: case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: LOG(ERROR) << "Framebuffer incomplete, missing attachment."; break; I'm running the open-source AMD drivers. I tried installing the proprietary AMD drivers, messed up, and spent hours painfully recovering my operating system. I'm really just checking in to see if it's anything anyone else has already seen, before I return to doing difficult and possibly pointless upgrades! This is the latest release Easy3D-v2.6.1, installed as a wheel. Thanks! Simon — Reply to this email directly, view it on GitHub<https://github.com/LiangliangNan/Easy3D/issues/215>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ADWOVCHTW4MHKBITDNUNKUD3ME3YXAVCNFSM6AAAAACDGKTGD2VHI2DSMVQWIX3LMV43ASLTON2WKOZTGI4TINRYG43DMMY>. You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>

SimonBirrell

Here's a quick variation: renderer = easy3d.OffScreen() model_pathname = easy3d.resource_directory() + "/data/bunny.ply" model = easy3d.PointCloudIO.load(model_pathname) renderer.add_model(model) print(f"Rendering to {image_pathname}") # renderer.render(image_pathname) viewer = easy3d.Viewer("Easy3D Viewer") viewer.add_model(model_pathname) viewer.run() Here the result looks like this: W 06/08/2025 07:16:12.702 viewer.cpp:304] Loading /home/simonbirrell/.local/share/mise/installs/python/3.13.2/lib/python3.13/site-packages/easy3d/resources/data/bunny.ply W 06/08/2025 07:16:12.711 point_cloud_io_ply.cpp:81] I 06/08/2025 07:16:12.712 point_cloud_io.cpp:75] I 06/08/2025 07:16:12.712 viewer.cpp:1304] Rendering to outputs/planarific/report/1000001_00.png W 06/08/2025 07:16:12.729 viewer.cpp:304] I 06/08/2025 07:16:12.746 surface_mesh_io_ply.cpp:88] I 06/08/2025 07:16:12.753 surface_mesh_io.cpp:74] I 06/08/2025 07:16:12.754 texture.cpp:69] I 06/08/2025 07:16:12.754 viewer.cpp:1304] -------------------------------------------------------------- Easy3D Viewer Usage (Shortcuts might be overridden): -------------------------------------------------------------- F1: Show help F2: Toggle animation (if available) Ctrl + 'o': Open file Ctrl + 's': Save file Fn + Delete: Delete current model '<' or '>': Switch between models 's': Take a snapshot 'p': Switch between perspective and orthographic projections 'a': Toggle axes visibility Ctrl + 'f': Toggle frame rate display Left drag: Rotate the camera Right drag: Move the camera 'x' + Left drag: Rotate the camera around the horizontal axis 'x' + Right drag: Move the camera along the horizontal axis 'y' + Left drag: Rotate the camera around the vertical axis 'y' + Right drag: Move the camera along the vertical axis 'o' + Left drag: Rotate the camera around the ortho-screen axis Middle button or Wheel: Zoom in/out Ctrl + '+'/'-': Zoom in/out Left/Right Arrow: Turn camera left/right Ctrl + Left/Right Arrow: Move camera left/right Up/Down Arrow: Move camera forward/backward Ctrl + Up/Down Arrow: Move camera up/down Ctrl + 'c': Copy current view status to clipboard Ctrl + 'v': Restore view status from clipboard Alt + 'c': Toggle clipping plane Alt + 'v': Toggle clipping plane visibility Alt + 'k': Add key frame to the camera path Alt + 'd': Delete the camera path Ctrl + 'k': Play the camera path Ctrl + 't': Toggle camera path visibility 'f': Fit screen (all models) 'c': Fit screen (current model only) 'z' + Left click: Zoom to target point on model 'z' + Right click: Zoom to fit screen Shift + Left click: Define a target point on model Shift + Right click: Undefine the target point (if any) on model Ctrl + Left drag: Zoom to fit region '-'/'=': Decrease/Increase point size '{'/'}': Decrease/Increase line width 'b': Toggle borders visibility 'e': Toggle edges visibility 'v': Toggle vertices visibility 'm': Toggle smooth shading (for SurfaceMesh) 'd': Print model info (drawables, properties) ------------------------------------------------------------------- I 06/08/2025 07:16:12.827 buffer.cpp:85] F 06/08/2025 07:16:12.841 logging.cpp:105] Aborted (core dumped) In this case, the little viewer window pops up with a black background, no other image and disappears after about a second when the core dump happens. And yet, when I load in pointclouds, transform them, output meshes and so on, it works perfectly. It appears to be just the visualization tha fails.

LiangliangNan

You mixed off screen rendering with the normal viewer, but I don't know if this is the root cause of the issue. Can you comment out the following lines of code and see if the problem still exists? renderer = easy3d.OffScreen() model_pathname = easy3d.resource_directory() + "/data/bunny.ply" model = easy3d.PointCloudIO.load(model_pathname) renderer.add_model(model) print(f"Rendering to {image_pathname}") Best, -- Liangliang ________________________________ From: Simon Birrell ***@***.***> Sent: Wednesday, August 6, 2025 2:19:06 PM To: LiangliangNan/Easy3D ***@***.***> Cc: Liangliang Nan ***@***.***>; Comment ***@***.***> Subject: Re: [LiangliangNan/Easy3D] [BUG] - *** stack smashing detected ***: terminated Aborted (core dumped) (Issue #215) [https://avatars.githubusercontent.com/u/1873370?s=20&v=4]SimonBirrell left a comment (LiangliangNan/Easy3D#215)<https://github.com/LiangliangNan/Easy3D/issues/215#issuecomment-3157545983> Here's a quick variation: renderer = easy3d.OffScreen() model_pathname = easy3d.resource_directory() + "/data/bunny.ply" model = easy3d.PointCloudIO.load(model_pathname) renderer.add_model(model) print(f"Rendering to {image_pathname}") # renderer.render(image_pathname) viewer = easy3d.Viewer("Easy3D Viewer") viewer.add_model(model_pathname) viewer.run() Here the result looks like this: W 06/08/2025 07:16:12.702 viewer.cpp:304] Loading /home/simonbirrell/.local/share/mise/installs/python/3.13.2/lib/python3.13/site-packages/easy3d/resources/data/bunny.ply W 06/08/2025 07:16:12.711 point_cloud_io_ply.cpp:81] I 06/08/2025 07:16:12.712 point_cloud_io.cpp:75] I 06/08/2025 07:16:12.712 viewer.cpp:1304] Rendering to outputs/planarific/report/1000001_00.png W 06/08/2025 07:16:12.729 viewer.cpp:304] I 06/08/2025 07:16:12.746 surface_mesh_io_ply.cpp:88] I 06/08/2025 07:16:12.753 surface_mesh_io.cpp:74] I 06/08/2025 07:16:12.754 texture.cpp:69] I 06/08/2025 07:16:12.754 viewer.cpp:1304] -------------------------------------------------------------- Easy3D Viewer Usage (Shortcuts might be overridden): -------------------------------------------------------------- F1: Show help F2: Toggle animation (if available) Ctrl + 'o': Open file Ctrl + 's': Save file Fn + Delete: Delete current model '<' or '>': Switch between models 's': Take a snapshot 'p': Switch between perspective and orthographic projections 'a': Toggle axes visibility Ctrl + 'f': Toggle frame rate display Left drag: Rotate the camera Right drag: Move the camera 'x' + Left drag: Rotate the camera around the horizontal axis 'x' + Right drag: Move the camera along the horizontal axis 'y' + Left drag: Rotate the camera around the vertical axis 'y' + Right drag: Move the camera along the vertical axis 'o' + Left drag: Rotate the camera around the ortho-screen axis Middle button or Wheel: Zoom in/out Ctrl + '+'/'-': Zoom in/out Left/Right Arrow: Turn camera left/right Ctrl + Left/Right Arrow: Move camera left/right Up/Down Arrow: Move camera forward/backward Ctrl + Up/Down Arrow: Move camera up/down Ctrl + 'c': Copy current view status to clipboard Ctrl + 'v': Restore view status from clipboard Alt + 'c': Toggle clipping plane Alt + 'v': Toggle clipping plane visibility Alt + 'k': Add key frame to the camera path Alt + 'd': Delete the camera path Ctrl + 'k': Play the camera path Ctrl + 't': Toggle camera path visibility 'f': Fit screen (all models) 'c': Fit screen (current model only) 'z' + Left click: Zoom to target point on model 'z' + Right click: Zoom to fit screen Shift + Left click: Define a target point on model Shift + Right click: Undefine the target point (if any) on model Ctrl + Left drag: Zoom to fit region '-'/'=': Decrease/Increase point size '{'/'}': Decrease/Increase line width 'b': Toggle borders visibility 'e': Toggle edges visibility 'v': Toggle vertices visibility 'm': Toggle smooth shading (for SurfaceMesh) 'd': Print model info (drawables, properties) ------------------------------------------------------------------- I 06/08/2025 07:16:12.827 buffer.cpp:85] F 06/08/2025 07:16:12.841 logging.cpp:105] Aborted (core dumped) And yet, when I load in pointclouds, transform them, output meshes and so on, it works perfectly. It appears to be just the visualization. — Reply to this email directly, view it on GitHub<https://github.com/LiangliangNan/Easy3D/issues/215#issuecomment-3157545983>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ADWOVCGJUH23I7B676BSU6L3MGM5VAVCNFSM6AAAAACDGKTGD2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTCNJXGU2DKOJYGM>. You are receiving this because you commented.Message ID: ***@***.***>

SimonBirrell

Yes, if I just run model_pathname = easy3d.resource_directory() + "/data/bunny.ply" viewer = easy3d.Viewer("Easy3D Viewer") viewer.add_model(model_pathname) viewer.run() I still get a core dump. I'm not sure if this is relevant, but I tried running **glmark2** to check if OpenGL is running. All the tests seem to display fine. There is one persistent warning (?) in the logs though: glmark2 ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control! ** Failed to set swap interval. Results may be bounded above by refresh rate. ======================================================= glmark2 2023.01 ======================================================= OpenGL Information GL_VENDOR: Mesa GL_RENDERER: llvmpipe (LLVM 19.1.5, 256 bits) GL_VERSION: 3.3 (Compatibility Profile) Mesa 25.0.0-devel Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0 Surface Size: 800x600 windowed ======================================================= ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control! ** Failed to set swap interval. Results may be bounded above by refresh rate. [build] use-vbo=false: FPS: 781 FrameTime: 1.281 ms ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control! ** Failed to set swap interval. Results may be bounded above by refresh rate. [build] use-vbo=true: FPS: 872 FrameTime: 1.148 ms ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control! ** Failed to set swap interval. Results may be bounded above by refresh rate. [texture] texture-filter=nearest: FPS: 1710 FrameTime: 0.585 ms ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control! ** Failed to set swap interval. Results may be bounded above by refresh rate. [texture] texture-filter=linear: FPS: 1960 FrameTime: 0.510 ms ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control! ** Failed to set swap interval. Results may be bounded above by refresh rate. [texture] texture-filter=mipmap: FPS: 1523 FrameTime: 0.657 ms ** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control! I'm wondering if the OpenGL implementation of AMDGPU is missing something that Easy3D needs. On the other hand, other 3D programs like CloudCompare seem to work ok.

SimonBirrell

Here's an absolutely minimalist version, in REPL: python Python 3.13.2 (main, Feb 12 2025, 14:51:17) [Clang 19.1.6 ] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import easy3d >>> easy3d.initialize(True) >>> model_pathname = easy3d.resource_directory() + "/data/bunny.ply" ... viewer = easy3d.Viewer("Easy3D Viewer") ... viewer.add_model(model_pathname) ... viewer.run() ... W 06/08/2025 08:01:22.338 viewer.cpp:304] I 06/08/2025 08:01:22.360 surface_mesh_io_ply.cpp:88] I 06/08/2025 08:01:22.366 surface_mesh_io.cpp:74] I 06/08/2025 08:01:22.366 texture.cpp:69] I 06/08/2025 08:01:22.367 viewer.cpp:1304] -------------------------------------------------------------- Easy3D Viewer Usage (Shortcuts might be overridden): -------------------------------------------------------------- F1: Show help F2: Toggle animation (if available) Ctrl + 'o': Open file Ctrl + 's': Save file Fn + Delete: Delete current model '<' or '>': Switch between models 's': Take a snapshot 'p': Switch between perspective and orthographic projections 'a': Toggle axes visibility Ctrl + 'f': Toggle frame rate display Left drag: Rotate the camera Right drag: Move the camera 'x' + Left drag: Rotate the camera around the horizontal axis 'x' + Right drag: Move the camera along the horizontal axis 'y' + Left drag: Rotate the camera around the vertical axis 'y' + Right drag: Move the camera along the vertical axis 'o' + Left drag: Rotate the camera around the ortho-screen axis Middle button or Wheel: Zoom in/out Ctrl + '+'/'-': Zoom in/out Left/Right Arrow: Turn camera left/right Ctrl + Left/Right Arrow: Move camera left/right Up/Down Arrow: Move camera forward/backward Ctrl + Up/Down Arrow: Move camera up/down Ctrl + 'c': Copy current view status to clipboard Ctrl + 'v': Restore view status from clipboard Alt + 'c': Toggle clipping plane Alt + 'v': Toggle clipping plane visibility Alt + 'k': Add key frame to the camera path Alt + 'd': Delete the camera path Ctrl + 'k': Play the camera path Ctrl + 't': Toggle camera path visibility 'f': Fit screen (all models) 'c': Fit screen (current model only) 'z' + Left click: Zoom to target point on model 'z' + Right click: Zoom to fit screen Shift + Left click: Define a target point on model Shift + Right click: Undefine the target point (if any) on model Ctrl + Left drag: Zoom to fit region '-'/'=': Decrease/Increase point size '{'/'}': Decrease/Increase line width 'b': Toggle borders visibility 'e': Toggle edges visibility 'v': Toggle vertices visibility 'm': Toggle smooth shading (for SurfaceMesh) 'd': Print model info (drawables, properties) ------------------------------------------------------------------- I 06/08/2025 08:01:22.395 buffer.cpp:85] F 06/08/2025 08:01:22.406 logging.cpp:105] Aborted (core dumped)

LiangliangNan

I tested the code on both Ubuntu and macOS, and both worked well. I don't have an AMD GPU and thus am not able to try. If you do want to figure it out, I suggest running this C++ example in the Debug mode. I can help if you let me know about any error messages you see.