View Issue Details

IDProjectCategoryView StatusLast Update
0005807DarkRadiantGUIpublic19.08.2022 15:33
Reporterjonri Assigned Togreebo  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
OSLinux 
Product Version2.14.0 
Target Version2.14.0Fixed in Version2.14.0 
Summary0005807: Texture Tool crashes when creating a new brush
DescriptionDarkRadiant 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 Reproduce1. 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 InformationTested 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.
TagsNo 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>                                                                                                                                                                                                                                           
stacktrace.txt (5,658 bytes)   

Activities

greebo

greebo

12.11.2021 11:36

administrator   ~0014532

Thanks, jonri

Related Changesets

DarkRadiant: master f425325f

12.11.2021 09:03

greebo


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

greebo


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

Issue History

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