View Issue Details

IDProjectCategoryView StatusLast Update
0007453ardourbugspublic2017-08-28 10:29
Reporterjohne53 Assigned To 
PriorityurgentSeveritycrashReproducibilityalways
Status closedResolutionfixed 
PlatformWindowsOSMSVC build 
Product VersionMixbus 4.x 
Summary0007453: Compiler crash when compiling 'gtk2_ardour/template_dialog.cc'
DescriptionNot 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 ReproduceSimply attempt to compile 'gtk2_ardour/template_dialog.cc'
Additional InformationThere'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.
TagsNo tags attached.

Activities

johne53

2017-08-23 12:55

reporter   ~0019988

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.

johne53

2017-08-28 10:27

reporter   ~0019992

Fixed in commit #b25b99216c (26 Aug 2017)

Issue History

Date Modified Username Field Change
2017-08-23 10:11 johne53 New Issue
2017-08-23 12:55 johne53 Note Added: 0019988
2017-08-28 10:27 johne53 Note Added: 0019992
2017-08-28 10:29 johne53 Status new => closed
2017-08-28 10:29 johne53 Resolution open => fixed