hoffstadt / hoffstadt/DearPyGui

Segmentation fault when closing the demo window

Open
#2,119 0 comments 0 reactions 0 assignees View on GitHub
state: pending type: bug
Dominant language
C++
Stars
15.6k
Forks
783
PR merge metrics
No merged PRs in 30d

Description

## Version of Dear PyGui

Operating System: NixOS 23.11 (x86_64)
Version: 1.9.1 (git)

Since there is no DearPyGui package on NixOS and the PyPI version does not work, I use my [DearPyGui Flake](https://github.com/L-Nafaryus/nix-registry/tree/master/flakes/dearpygui) build via nix flakes.

## My Issue/Question

* Issue:
The application crashes with a segmentation fault when trying to close or delete a demo window with accompanying elements.
* Investigation:
The application does not crash unless you try to delete the texture registry with `dpg.delete_item("__demo_texture_container")` but this throws an existing alias exception when you try to create a new demo window due to an existing texture buffer.

## To Reproduce

Steps to reproduce the behavior:
1. Press `Help > Demo`.
2. Close Demo with `x` button.
or
2. Press `Help > Demo` again.

## Expected behavior

The demo window is successfully closed (deleted).

## Screenshots/Video

[segmentation fault](https://github.com/hoffstadt/DearPyGui/assets/37117584/7d16b70b-3503-4d69-bc6a-34d4605cebad)

## Standalone, minimal, complete and verifiable example

```python
import dearpygui.dearpygui as dpg
import dearpygui.demo as dpg_demo

def delete_demo():
dpg.delete_item("__demo_id")
dpg.delete_item("__demo_texture_container") # comment this line to see different behavior
dpg.delete_item("__demo_colormap_registry")
dpg.delete_item("__demo_hyperlinkTheme")
dpg.delete_item("__demo_theme_progressbar")
dpg.delete_item("stock_theme1")
dpg.delete_item("stock_theme2")
dpg.delete_item("stock_theme3")
dpg.delete_item("stock_theme4")
dpg.delete_item("stem_theme1")
dpg.delete_item("__demo_keyboard_handler")
dpg.delete_item("__demo_mouse_handler")
dpg.delete_item("__demo_filedialog")
dpg.delete_item("__demo_stage1")
dpg.delete_item("__demo_popup1")
dpg.delete_item("__demo_popup2")
dpg.delete_item("__demo_popup3")
dpg.delete_item("__demo_item_reg3")
dpg.delete_item("__demo_item_reg6")
dpg.delete_item("__demo_item_reg7")
dpg.delete_item("demoitemregistry")
for i in range(7):
dpg.delete_item("__demo_theme"+str(i))
dpg.delete_item("__demo_theme2_"+str(i))
for i in range(5):
dpg.delete_item("__demo_item_reg1_"+str(i))
dpg.delete_item("__demo_item_reg2_"+str(i))
for i in range(3):
dpg.delete_item("__demo_item_reg4_"+str(i))
for i in range(4):
dpg.delete_item("__demo_item_reg5_"+str(i))

if __name__ == "__main__":
dpg.create_context()
dpg.configure_app(docking = True, docking_space = True)

dpg.create_viewport(title = "Bug", width = 1000, height = 800)
dpg.setup_dearpygui()

with dpg.viewport_menu_bar():
with dpg.menu(label = "Help"):
dpg.add_menu_item(label = "Demo", check = True, callback = lambda s, a, u: dpg_demo.show_demo() if a else delete_demo())

dpg.show_viewport()

while dpg.is_dearpygui_running():
dpg.render_dearpygui_frame()

else:
dpg.destroy_context()
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.