View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0007453 | ardour | bugs | public | 2017-08-23 10:11 | 2017-08-28 10:29 |
Reporter | johne53 | Assigned To | |||
Priority | urgent | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | Windows | OS | MSVC build | ||
Product Version | Mixbus 4.x | ||||
Summary | 0007453: Compiler crash when compiling 'gtk2_ardour/template_dialog.cc' | ||||
Description | Not sure if this is the right place to report this. However... The c'tor for class TemplateDialog contains these 4 lines (near the bottom):- session_tm->TemplatesImported.connect (*this, invalidator (*this), boost::bind (&RouteTemplateManager::init, route_tm), gui_context ()); route_tm->TemplatesImported.connect (*this, invalidator (*this), boost::bind (&SessionTemplateManager::init, session_tm), gui_context ()); // 2 more lines nb->signal_switch_page().connect (boost::bind (&TemplateManager::handle_dirty_description, session_tm)); nb->signal_switch_page().connect (boost::bind (&TemplateManager::handle_dirty_description, route_tm)); I've never come across this before with MSVC but attempting to compile those lines actually crashes the compiler!! | ||||
Steps To Reproduce | Simply attempt to compile 'gtk2_ardour/template_dialog.cc' | ||||
Additional Information | There's not much I can do to debug this but I did notice that the variables 'session_tm' and 'route_tm' are local objects (i.e. in each case, we're trying to connect a signal to an object which we reference through a stack-based pointer). Each pointer will become invalid once the c'tor exits. I'm not sure if that's actual the cause in this case but it seems like a good place to start. | ||||
Tags | No tags attached. | ||||
|
In case it's of any help I used 'git bisect' to narrow down the problem. It got introduced by commit #c834e88e9e - specifically, the addition of these 2 lines at the end of TemplateDialog::TemplateDialog() :- nb->signal_switch_page().connect (boost::bind (&TemplateManager::handle_dirty_description, session_tm)); nb->signal_switch_page().connect (boost::bind (&TemplateManager::handle_dirty_description, route_tm)); Hope that helps. |
|
Fixed in commit #b25b99216c (26 Aug 2017) |