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
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: ***@***.***>
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.
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: ***@***.***>
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.
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)
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.