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 |