View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0005807 | DarkRadiant | GUI | public | 12.11.2021 04:11 | 19.08.2022 15:33 |
| Reporter | jonri | Assigned To | greebo | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| OS | Linux | ||||
| Product Version | 2.14.0 | ||||
| Target Version | 2.14.0 | Fixed in Version | 2.14.0 | ||
| Summary | 0005807: Texture Tool crashes when creating a new brush | ||||
| Description | DarkRadiant crashes with a segfault when creating a new brush under certain conditions: 1. The Texture Tool window is open 2. You already have a single face selected and visible in the Texture Tool | ||||
| Steps To Reproduce | 1. Start with a blank map 2. Create a new brush, apply any texture to the whole brush 3. Select a single face and open the texture tool 4. Create another new brush 5. The new brush faces will get populated in the texture tool, followed by DR crashing | ||||
| Additional Information | Tested in the latest master. FaceNode::render fails when TexTool::drawUVCoords calls it, and the node seems to be an invalid pointer. Relevant stack trace is attached for more details. | ||||
| Tags | No tags attached. | ||||
| Attached Files | stacktrace.txt (5,658 bytes)
1 textool::FaceNode::render FaceNode.cpp 136 0x7f24c5251228
2 operator() TexTool.cpp 556 0x55d3ea22a2d8
3 std::__invoke_impl<bool, ui::TexTool::drawUVCoords()::<lambda(const Ptr&)>&, const std::shared_ptr<textool::INode>&>(std::__invoke_other, struct {...} &) invoke.h 61 0x55d3ea22fd4b
4 std::__invoke_r<bool, ui::TexTool::drawUVCoords()::<lambda(const Ptr&)>&, const std::shared_ptr<textool::INode>&>(struct {...} &) invoke.h 114 0x55d3ea22f3f4
5 std::_Function_handler<bool(const std::shared_ptr<textool::INode>&), ui::TexTool::drawUVCoords()::<lambda(const Ptr&)>>::_M_invoke(const std::_Any_data &, const std::shared_ptr<textool::INode> &) std_function.h 291 0x55d3ea22e7e9
6 std::function<bool (std::shared_ptr<textool::INode> const&)>::operator()(std::shared_ptr<textool::INode> const&) const std_function.h 560 0x7f24c526882f
7 textool::TextureToolSceneGraph::foreachNode(std::function<bool (std::shared_ptr<textool::INode> const&)> const&) TextureToolSceneGraph.cpp 61 0x7f24c5266db8
8 ui::TexTool::drawUVCoords TexTool.cpp 554 0x55d3ea22a32f
9 ui::TexTool::onGLDraw TexTool.cpp 802 0x55d3ea22b6f0
10 std::__invoke_impl<bool, bool (ui::TexTool:: *&)(), ui::TexTool *&> invoke.h 74 0x55d3ea23ec98
11 std::__invoke<bool (ui::TexTool:: *&)(), ui::TexTool *&> invoke.h 96 0x55d3ea23e741
12 std::_Bind<bool (ui::TexTool:: *(ui::TexTool *))()>::__call<bool, , 0ul>(std::tuple<>&&, std::_Index_tuple<0ul>) functional 420 0x55d3ea23deb9
13 std::_Bind<bool (ui::TexTool:: *(ui::TexTool *))()>::operator()<, bool>() functional 503 0x55d3ea23cc03
14 std::__invoke_impl<bool, std::_Bind<bool (ui::TexTool:: *(ui::TexTool *))()>&>(std::__invoke_other, std::_Bind<bool (ui::TexTool:: *(ui::TexTool *))()>&) invoke.h 61 0x55d3ea23aba6
15 std::__invoke_r<bool, std::_Bind<bool (ui::TexTool:: *(ui::TexTool *))()>&>(std::_Bind<bool (ui::TexTool:: *(ui::TexTool *))()>&) invoke.h 114 0x55d3ea238566
16 std::_Function_handler<bool (), std::_Bind<bool (ui::TexTool:: *(ui::TexTool *))()>>::_M_invoke(std::_Any_data const&) std_function.h 291 0x55d3ea236235
17 std::function<bool ()>::operator()() const std_function.h 560 0x55d3ea27747e
18 wxutil::GLWidget::OnPaint GLWidget.cpp 98 0x7f24cadf97ab
19 wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler *, wxEvent&) 0x7f24ca4dfdde
20 wxEvtHandler::SearchDynamicEventTable(wxEvent&) 0x7f24ca4e015b
... <More>
| ||||
|
DarkRadiant: master f425325f 12.11.2021 09:03 Details Diff |
0005807: Add test checking the behaviour of a mixed brush & single face selection. The Texture Tool Scene Graph recognises more nodes than necessary. |
Affected Issues 0005807 |
|
| mod - test/TextureTool.cpp | Diff File | ||
|
DarkRadiant: master f705f8d1 12.11.2021 11:33 Details Diff |
0005807: Add Face destruction signal, since there's no other easy way to get notified about Faces being removed from a selected brush. |
Affected Issues 0005807 |
|
| mod - include/ibrush.h | Diff File | ||
| mod - radiantcore/brush/Face.cpp | Diff File | ||
| mod - radiantcore/brush/Face.h | Diff File | ||
| mod - radiantcore/selection/textool/TextureToolSceneGraph.cpp | Diff File | ||
| mod - radiantcore/selection/textool/TextureToolSceneGraph.h | Diff File | ||
| mod - test/TextureTool.cpp | Diff File | ||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 12.11.2021 04:11 | jonri | New Issue | |
| 12.11.2021 04:11 | jonri | File Added: stacktrace.txt | |
| 12.11.2021 08:25 | greebo | Status | new => confirmed |
| 12.11.2021 11:33 | greebo | Assigned To | => greebo |
| 12.11.2021 11:33 | greebo | Status | confirmed => assigned |
| 12.11.2021 11:34 | greebo | Target Version | => 2.14.0 |
| 12.11.2021 11:35 | greebo | Changeset attached | => DarkRadiant master f425325f |
| 12.11.2021 11:35 | greebo | Changeset attached | => DarkRadiant master f705f8d1 |
| 12.11.2021 11:36 | greebo | Status | assigned => resolved |
| 12.11.2021 11:36 | greebo | Resolution | open => fixed |
| 12.11.2021 11:36 | greebo | Fixed in Version | => 2.14.0 |
| 12.11.2021 11:36 | greebo | Note Added: 0014532 | |
| 19.08.2022 15:33 | greebo | Status | resolved => closed |