Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OS app repeatable crash on Mac #3434

Closed
21 tasks
DavidGoldwasser opened this issue Feb 27, 2019 · 8 comments · Fixed by #3548
Closed
21 tasks

OS app repeatable crash on Mac #3434

DavidGoldwasser opened this issue Feb 27, 2019 · 8 comments · Fixed by #3548

Comments

@DavidGoldwasser
Copy link
Collaborator

DavidGoldwasser commented Feb 27, 2019

Many internal users have seen stability issues on mac, but have been seemingly random. I came up with a repeatable case from a clean model following steps below.

  1. Launch OpenStudioApp
  2. Go to Space Types tab
  3. Bring in first space type from library into model.
  4. Go to "Loads" sub-tab
  5. Click on text cell in Space Type Name, Load Name, or Multiplier Column.
  6. Without doing anything else after clicking in cells described in step 5, switch to "Spaces" tab.

For me this always crashes. Definition Column or drop zone columns do not crash. I expect this kind of behavior on other tabs is also cause of many crashes. I have not tested this on windows to see if it is unique to mac. I tested on 2.7.0 and 2.7.2 (internal installer). Screenshot below is just before I switch to "Spaces" tab.

screen shot 2019-02-27 at 8 09 09 am

CC: @macumber

I wanted to put a list of checkbox with specific scenarios beyond the one above so that someone can get overview without having to look through the comments. (>name = tab/sub-tab, |name = column). Unless stated otherwise these crash after entering text in this tab and then changing the major tab.

Summary:

  • Any grid view text on Site, SpaceType, and ThermalZone crash app.
  • On Facility Tab all building story text fields crash, some exterior equipment fields crash (all except for End Use Subcategory) and on Shading I haven't gotten a crash yet
  • I haven't gotten a crash yet on > Space > Properties, but need to test more in sub tabs. There was reported lockup of space name on UH on Windows (maybe a different issue)

Detail:

  • > Site > Weather File & Design Days > Date | Design Day Name

  • > Site > Weather File & Design Days > Date | Day of Month

  • > Site > Weather File & Design Days > Date | Month

  • > Site > Weather File & Design Days > Temperature | Maximum Dry Bulb Temperature

  • > Site > Weather File & Design Days > ** spot checked a few others and didn't find text entry that didn't crash**

  • > SpaceType > Loads | Space Type Name

  • > SpaceType > Loads | Load Name

  • > SpaceType > Loads | Multiplier

  • > SpaceType > Measure Tags | Standards Template

  • > SpaceType > Measure Tags | Standards Building Type

  • > SpaceType>Measure Tags | Standards Space Type

  • > Facility > Stories|Story Name

  • > Facility > Stories | Nominal Z Coordinate

  • > Facility > Stories | Nominal Floor to Floor Height

  • > Facility > Stories | Nominal Floor to Ceiling Height

  • > Facility > Exterior Equipment | Exterior Lights Name

  • > Facility > Exterior Equipment | Multiplier

  • > ThermalZones > HVAC Systems | Name

  • > ThermalZones > HVAC Systems | Multiplier

  • > ThermalZones > ** spot checked a few others and didn't find text entry that didn't crash**

  • > Space > Loads | Multiplier

@jmarrec
Copy link
Collaborator

jmarrec commented Feb 27, 2019

Just tested with 2.7.1 on Windows, no crash.

@carlobianchi89
Copy link

It happens to me on Mac too, both opening an existing project and starting from an empty project, as David described.
It crashes not only with the Loads sub-tab, but also on Measure Tags, clicking on text cell in Standards Template or Standards Building Type or Standards Space Type.
After I click on any of these text cells, if I click on any other other tab, OpenStudio crashes.

@DavidGoldwasser
Copy link
Collaborator Author

There is UH post here. I can reproduce crash vs. lockup when working with stories, but I have not been able to reproduce crash or lockup in space tab
https://unmethours.com/question/38296/open-studio-keeps-freezing-when-trying-to-assign-space-names/?comment=38320#post-id-38320

@DavidGoldwasser
Copy link
Collaborator Author

DavidGoldwasser commented Apr 19, 2019

I updated this in the initial ticket with list of all know crashes. I will continue to update it if I find new cases.

@DavidGoldwasser
Copy link
Collaborator Author

DavidGoldwasser commented Apr 23, 2019

Workaround for crash is detailed here. On the screenshot in original post the people load instance name was altered. If you type and change tabs without tabbing out, it crashes. It you tab out, it looks like below. Original cell is still yellow, but another cell (active) is outlined in blue. It crashes if you leave hear as well.

Screen Shot 2019-04-23 at 7 43 19 AM

At this point, just clicking elsewhere on the GUU background removes the blue outline but not the yellow hi-light on original cell. It still crashes if you leave it like this

If instead you click in another text field you now have two yellow hi-lighted cells. This will crash if you leave the tab

Screen Shot 2019-04-23 at 7 47 36 AM

Now go back and click on the original cell, it should be only yellow cell. Now instead of tabbing out of it, click in GUI background. It is no longer yellow, nothing is highlighted, and the app won't crash if you switch tabs.
Screen Shot 2019-04-23 at 7 50 52 AM

So the short story for the work around, don't tab out of cell, but just click on blank space in GUI background. Make sure nothing is yellow and then switch tabs.

I have noticed that if you are in the last cell of the last row and tab out, it does not appear to crash even though the cell is still yellow. That is why I didn't see crash on end use sub-category tab for building story, because I only had one story object. When I add a second story and then edit the field on the first object it crashes, but not when I edit it on the second (last) object.

@jmarrec
Copy link
Collaborator

jmarrec commented Apr 24, 2019

Reproduced with current develop on Mac. Backtrace:

[openstudio.openstudio_lib.MainRightColumnController] <-2> Setting new edit widget: 0x1212eac20
[openstudio.openstudio_lib.MainRightColumnController] <-2> Removing old edit widget: 0x1212eac20
[openstudio.openstudio_lib.MainRightColumnController] <-2> Setting new edit widget: 0x1212eac20
Process 1004 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x0000000112453a6a QtCore`QMetaObject::cast(QObject*) const + 26
QtCore`QMetaObject::cast:
->  0x112453a6a <+26>: callq  *(%rax)
    0x112453a6c <+28>: movq   %rax, %rcx
    0x112453a6f <+31>: xorl   %eax, %eax
    0x112453a71 <+33>: nopw   %cs:(%rax,%rax)
Target 0: (OpenStudioApp) stopped.
(lldb) bt
error: libopenstudio_lib.a(OSGridController.cpp.o) :: Class 'ObjectSelector' has a base class 'QObject' which does not have a complete definition.
error: libopenstudio_lib.a(OSGridController.cpp.o) :: Try compiling the source file with -fstandalone-debug.
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
  * frame #0: 0x0000000112453a6a QtCore`QMetaObject::cast(QObject*) const + 26
    frame #1: 0x0000000100b8817f OpenStudioApp`openstudio::HorizontalHeaderWidget* qobject_cast<openstudio::HorizontalHeaderWidget*>(object=0x0000000121794f30) at qobject.h:518
    frame #2: 0x0000000100b59347 OpenStudioApp`openstudio::OSGridController::onInFocus(this=0x0000000113cb00d0, inFocus=true, hasData=true, row=1, column=3, subrow=optional<int> @ 0x00007ffeefbf5c08) at OSGridController.cpp:1985
    frame #3: 0x0000000100b99030 OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2, 3, 4>, QtPrivate::List<bool, bool, int, int, boost::optional<int> >, void, void (openstudio::OSGridController::*)(bool, bool, int, int, boost::optional<int>)>::call(f=c0 7d b5 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000113cb00d0, arg=0x00007ffeefbf5e60)(bool, bool, int, int, boost::optional<int>), openstudio::OSGridController*, void**) at qobjectdefs_impl.h:501
    frame #4: 0x0000000100b98f23 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::OSGridController::*)(bool, bool, int, int, boost::optional<int>)>::call<QtPrivate::List<bool, bool, int, int, boost::optional<int> >, void>(f=c0 7d b5 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000113cb00d0, arg=0x00007ffeefbf5e60)(bool, bool, int, int, boost::optional<int>), openstudio::OSGridController*, void**) at qobjectdefs_impl.h:520
    frame #5: 0x0000000100b98e56 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::OSGridController::*)(bool, bool, int, int, boost::optional<int>), QtPrivate::List<bool, bool, int, int, boost::optional<int> >, void>::impl(which=1, this_=0x0000000120f85a60, r=0x0000000113cb00d0, a=0x00007ffeefbf5e60, ret=0x0000000000000000) at qobject_impl.h:143
    frame #6: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #7: 0x0000000100cba352 OpenStudioApp`openstudio::ObjectSelector::inFocus(this=0x0000000113cae070, _t1=true, _t2=true, _t3=1, _t4=3, _t5=<unavailable>) at moc_OSGridController.cxx:289
    frame #8: 0x0000000100b90f80 OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2, 3, 4>, QtPrivate::List<bool, bool, int, int, boost::optional<int> >, void, void (openstudio::ObjectSelector::*)(bool, bool, int, int, boost::optional<int>)>::call(f=d0 a2 cb 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000113cae070, arg=0x00007ffeefbf6180)(bool, bool, int, int, boost::optional<int>), openstudio::ObjectSelector*, void**) at qobjectdefs_impl.h:501
    frame #9: 0x0000000100b90e73 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::ObjectSelector::*)(bool, bool, int, int, boost::optional<int>)>::call<QtPrivate::List<bool, bool, int, int, boost::optional<int> >, void>(f=d0 a2 cb 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000113cae070, arg=0x00007ffeefbf6180)(bool, bool, int, int, boost::optional<int>), openstudio::ObjectSelector*, void**) at qobjectdefs_impl.h:520
    frame #10: 0x0000000100b90da6 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::ObjectSelector::*)(bool, bool, int, int, boost::optional<int>), QtPrivate::List<bool, bool, int, int, boost::optional<int> >, void>::impl(which=1, this_=0x000000012191c690, r=0x0000000113cae070, a=0x00007ffeefbf6180, ret=0x0000000000000000) at qobject_impl.h:143
    frame #11: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #12: 0x0000000100cb9e72 OpenStudioApp`openstudio::WidgetLocation::inFocus(this=0x0000000123cb4640, _t1=true, _t2=true, _t3=1, _t4=3, _t5=<unavailable>) at moc_OSGridController.cxx:154
    frame #13: 0x0000000100b4be0c OpenStudioApp`openstudio::WidgetLocation::onInFocus(this=0x0000000123cb4640, hasFocus=true, hasData=true) at OSGridController.cpp:100
    frame #14: 0x0000000100b90b3b OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<bool, bool>, void, void (openstudio::WidgetLocation::*)(bool, bool)>::call(f=90 bd b4 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000123cb4640, arg=0x00007ffeefbf64c0)(bool, bool), openstudio::WidgetLocation*, void**) at qobjectdefs_impl.h:501
    frame #15: 0x0000000100b90a83 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::WidgetLocation::*)(bool, bool)>::call<QtPrivate::List<bool, bool>, void>(f=90 bd b4 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000123cb4640, arg=0x00007ffeefbf64c0)(bool, bool), openstudio::WidgetLocation*, void**) at qobjectdefs_impl.h:520
    frame #16: 0x0000000100b909b6 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::WidgetLocation::*)(bool, bool), QtPrivate::List<bool, bool>, void>::impl(which=1, this_=0x0000000121946d80, r=0x0000000123cb4640, a=0x00007ffeefbf64c0, ret=0x0000000000000000) at qobject_impl.h:143
    frame #17: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #18: 0x0000000100cbafab OpenStudioApp`openstudio::Holder::inFocus(this=0x000000012121d8a0, _t1=true, _t2=true) at moc_OSGridController.cxx:654
    frame #19: 0x0000000100b902ab OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<bool, bool>, void, void (openstudio::Holder::*)(bool, bool)>::call(f=50 af cb 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x000000012121d8a0, arg=0x00007ffeefbf6760)(bool, bool), openstudio::Holder*, void**) at qobjectdefs_impl.h:501
    frame #20: 0x0000000100b901f3 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::Holder::*)(bool, bool)>::call<QtPrivate::List<bool, bool>, void>(f=50 af cb 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x000000012121d8a0, arg=0x00007ffeefbf6760)(bool, bool), openstudio::Holder*, void**) at qobjectdefs_impl.h:520
    frame #21: 0x0000000100b90126 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::Holder::*)(bool, bool), QtPrivate::List<bool, bool>, void>::impl(which=1, this_=0x0000000123d290f0, r=0x000000012121d8a0, a=0x00007ffeefbf6760, ret=0x0000000000000000) at qobject_impl.h:143
    frame #22: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #23: 0x0000000100cb953b OpenStudioApp`openstudio::OSDoubleEdit2::inFocus(this=0x0000000120fb4e60, _t1=true, _t2=true) at moc_OSDoubleEdit.cxx:148
    frame #24: 0x0000000100b45093 OpenStudioApp`openstudio::OSDoubleEdit2::onEditingFinished(this=0x0000000120fb4e60) at OSDoubleEdit.cpp:253
    frame #25: 0x0000000100b4af4e OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (openstudio::OSDoubleEdit2::*)()>::call(f=60 50 b4 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000120fb4e60, arg=0x00007ffeefbf6be8)(), openstudio::OSDoubleEdit2*, void**) at qobjectdefs_impl.h:501
    frame #26: 0x0000000100b4aec3 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::OSDoubleEdit2::*)()>::call<QtPrivate::List<>, void>(f=60 50 b4 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000120fb4e60, arg=0x00007ffeefbf6be8)(), openstudio::OSDoubleEdit2*, void**) at qobjectdefs_impl.h:520
    frame #27: 0x0000000100b4adf6 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::OSDoubleEdit2::*)(), QtPrivate::List<>, void>::impl(which=1, this_=0x00000001219d2240, r=0x0000000120fb4e60, a=0x00007ffeefbf6be8, ret=0x0000000000000000) at qobject_impl.h:143
    frame #28: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #29: 0x0000000111ce6461 QtWidgets`QLineEdit::focusOutEvent(QFocusEvent*) + 257
    frame #30: 0x0000000100b48afd OpenStudioApp`openstudio::OSDoubleEdit2::focusOutEvent(this=0x0000000120fb4e60, e=0x00007ffeefbf7328) at OSDoubleEdit.cpp:476
    frame #31: 0x0000000111bdcedd QtWidgets`QWidget::event(QEvent*) + 1853
    frame #32: 0x0000000111ce51a3 QtWidgets`QLineEdit::event(QEvent*) + 643
    frame #33: 0x0000000111b9bec6 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #34: 0x0000000111b9e985 QtWidgets`QApplication::notify(QObject*, QEvent*) + 5941
    frame #35: 0x00000001003b75a0 OpenStudioApp`openstudio::OSAppBase::notify(this=0x00007ffeefbfe5a8, receiver=0x0000000120fb4e60, e=0x00007ffeefbf7328) at OSAppBase.cpp:80
    frame #36: 0x0000000100020d0a OpenStudioApp`openstudio::OpenStudioApp::notify(this=0x00007ffeefbfe5a8, receiver=0x0000000120fb4e60, event=0x00007ffeefbf7328) at OpenStudioApp.cpp:967
    frame #37: 0x000000011244dce4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #38: 0x0000000111b99b49 QtWidgets`QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) + 265
    frame #39: 0x0000000111bd8d1f QtWidgets`QWidget::setFocus(Qt::FocusReason) + 991
    frame #40: 0x0000000111bd92da QtWidgets`QWidget::focusNextPrevChild(bool) + 282
    frame #41: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #42: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #43: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #44: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #45: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #46: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #47: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #48: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #49: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #50: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #51: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #52: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #53: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #54: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #55: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #56: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #57: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #58: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #59: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #60: 0x0000000111bd9203 QtWidgets`QWidget::focusNextPrevChild(bool) + 67
    frame #61: 0x0000000111bd0dc3 QtWidgets`QWidgetPrivate::setEnabled_helper(bool) + 259
    frame #62: 0x0000000100b43110 OpenStudioApp`openstudio::OSDoubleEdit2::unbind(this=0x0000000120fb4e60) at OSDoubleEdit.cpp:247
    frame #63: 0x0000000100b42d34 OpenStudioApp`openstudio::OSDoubleEdit2::~OSDoubleEdit2(this=0x0000000120fb4e60) at OSDoubleEdit.cpp:65
    frame #64: 0x0000000100b43175 OpenStudioApp`openstudio::OSDoubleEdit2::~OSDoubleEdit2(this=0x0000000120fb4e60) at OSDoubleEdit.cpp:64
    frame #65: 0x0000000100b431b9 OpenStudioApp`openstudio::OSDoubleEdit2::~OSDoubleEdit2(this=0x0000000120fb4e60) at OSDoubleEdit.cpp:64
    frame #66: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #67: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #68: 0x0000000100b8c87f OpenStudioApp`openstudio::Holder::~Holder(this=0x000000012121d8a0) at OSGridController.cpp:2086
    frame #69: 0x0000000100b8c8a5 OpenStudioApp`openstudio::Holder::~Holder(this=0x000000012121d8a0) at OSGridController.cpp:2085
    frame #70: 0x0000000100b8c8e9 OpenStudioApp`openstudio::Holder::~Holder(this=0x000000012121d8a0) at OSGridController.cpp:2085
    frame #71: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #72: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #73: 0x0000000111bcd1de QtWidgets`QWidget::~QWidget() + 14
    frame #74: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #75: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #76: 0x0000000111bcd1de QtWidgets`QWidget::~QWidget() + 14
    frame #77: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #78: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #79: 0x0000000100cbbf9d OpenStudioApp`openstudio::OSGridView::~OSGridView(this=0x0000000120fc1840) at OSGridView.hpp:68
    frame #80: 0x0000000100cbbeb5 OpenStudioApp`openstudio::OSGridView::~OSGridView(this=0x0000000120fc1840) at OSGridView.hpp:68
    frame #81: 0x0000000100cbbed9 OpenStudioApp`openstudio::OSGridView::~OSGridView(this=0x0000000120fc1840) at OSGridView.hpp:68
    frame #82: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #83: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #84: 0x000000010011adf5 OpenStudioApp`openstudio::EMSInspectorHeader::~EMSInspectorHeader(this=0x0000000113ae2e50) at EMSInspectorView.cpp:50
    frame #85: 0x000000010011ad65 OpenStudioApp`openstudio::EMSInspectorHeader::~EMSInspectorHeader(this=0x0000000113ae2e50) at EMSInspectorView.cpp:50
    frame #86: 0x000000010011ad89 OpenStudioApp`openstudio::EMSInspectorHeader::~EMSInspectorHeader(this=0x0000000113ae2e50) at EMSInspectorView.cpp:50
    frame #87: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #88: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #89: 0x0000000111d3b36e QtWidgets`QStackedWidget::~QStackedWidget() + 14
    frame #90: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #91: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #92: 0x0000000111bcd1de QtWidgets`QWidget::~QWidget() + 14
    frame #93: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #94: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #95: 0x0000000111d66b9e QtWidgets`QScrollArea::~QScrollArea() + 14
    frame #96: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #97: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #98: 0x000000010011adf5 OpenStudioApp`openstudio::EMSInspectorHeader::~EMSInspectorHeader(this=0x0000000113af1120) at EMSInspectorView.cpp:50
    frame #99: 0x0000000100c93e7b OpenStudioApp`openstudio::ModelObjectInspectorView::~ModelObjectInspectorView(this=0x0000000113af1120) at ModelObjectInspectorView.hpp:60
    frame #100: 0x0000000100c76075 OpenStudioApp`openstudio::LoadsInspectorView::~LoadsInspectorView(this=0x0000000113af1120) at LoadsView.hpp:76
    frame #101: 0x0000000100c75fe5 OpenStudioApp`openstudio::LoadsInspectorView::~LoadsInspectorView(this=0x0000000113af1120) at LoadsView.hpp:76
    frame #102: 0x0000000100c76009 OpenStudioApp`openstudio::LoadsInspectorView::~LoadsInspectorView(this=0x0000000113af1120) at LoadsView.hpp:76
    frame #103: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #104: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #105: 0x0000000111bcd1de QtWidgets`QWidget::~QWidget() + 14
    frame #106: 0x0000000112479843 QtCore`QObjectPrivate::deleteChildren() + 227
    frame #107: 0x0000000111bcc8ba QtWidgets`QWidget::~QWidget() + 1434
    frame #108: 0x0000000100c81845 OpenStudioApp`openstudio::SubTabView::~SubTabView(this=0x0000000113a62c00) at SubTabView.hpp:62
    frame #109: 0x0000000100c81825 OpenStudioApp`openstudio::ModelSubTabView::~ModelSubTabView(this=0x0000000113a62c00) at ModelSubTabView.hpp:63
    frame #110: 0x0000000100c5ea95 OpenStudioApp`openstudio::ConstructionsView::~ConstructionsView(this=0x0000000113a62c00) at ConstructionsView.hpp:50
    frame #111: 0x0000000100c5e975 OpenStudioApp`openstudio::ConstructionsView::~ConstructionsView(this=0x0000000113a62c00) at ConstructionsView.hpp:50
    frame #112: 0x0000000100c5e999 OpenStudioApp`openstudio::ConstructionsView::~ConstructionsView(this=0x0000000113a62c00) at ConstructionsView.hpp:50
    frame #113: 0x0000000100c2d238 OpenStudioApp`openstudio::OSQObjectController::~OSQObjectController(this=0x0000000113ae6270) at OSQObjectController.cpp:52
    frame #114: 0x00000001002d75dd OpenStudioApp`openstudio::SubTabController::~SubTabController(this=0x0000000113ae6270) at SubTabController.hpp:52
    frame #115: 0x00000001002d61ad OpenStudioApp`openstudio::ModelSubTabController::~ModelSubTabController(this=0x0000000113ae6270) at ModelSubTabController.hpp:59
    frame #116: 0x0000000100c93975 OpenStudioApp`openstudio::ScheduleSetsController::~ScheduleSetsController(this=0x0000000113ae6270) at ScheduleSetsController.hpp:45
    frame #117: 0x0000000100c93925 OpenStudioApp`openstudio::ScheduleSetsController::~ScheduleSetsController(this=0x0000000113ae6270) at ScheduleSetsController.hpp:45
    frame #118: 0x0000000100c93949 OpenStudioApp`openstudio::ScheduleSetsController::~ScheduleSetsController(this=0x0000000113ae6270) at ScheduleSetsController.hpp:45
    frame #119: 0x00000001000348d5 OpenStudioApp`std::__1::__shared_ptr_pointer<openstudio::StartupMenu*, std::__1::default_delete<openstudio::StartupMenu>, std::__1::allocator<openstudio::StartupMenu> >::__on_zero_shared() [inlined] std::__1::default_delete<openstudio::StartupMenu>::operator(this=0x0000000113c5ba28, __ptr=0x0000000113ae6270)(openstudio::StartupMenu*) const at memory:2285
    frame #120: 0x00000001000348ac OpenStudioApp`std::__1::__shared_ptr_pointer<openstudio::StartupMenu*, std::__1::default_delete<openstudio::StartupMenu>, std::__1::allocator<openstudio::StartupMenu> >::__on_zero_shared(this=0x0000000113c5ba10) at memory:3586
    frame #121: 0x00000001000267e1 OpenStudioApp`std::__1::shared_ptr<openstudio::detail::Workspace_Impl>::~shared_ptr() [inlined] std::__1::__shared_count::__release_shared(this=0x0000000113c5ba10) at memory:3490
    frame #122: 0x0000000100026797 OpenStudioApp`std::__1::shared_ptr<openstudio::detail::Workspace_Impl>::~shared_ptr() [inlined] std::__1::__shared_weak_count::__release_shared(this=0x0000000113c5ba10) at memory:3532
    frame #123: 0x0000000100026797 OpenStudioApp`std::__1::shared_ptr<openstudio::detail::Workspace_Impl>::~shared_ptr(this=0x0000000120e2b0b8) at memory:4468
    frame #124: 0x000000010000c665 OpenStudioApp`std::__1::shared_ptr<openstudio::StartupMenu>::~shared_ptr(this=0x0000000120e2b0b8) at memory:4466
    frame #125: 0x0000000100ca0781 OpenStudioApp`openstudio::SpaceTypesTabController::~SpaceTypesTabController(this=0x0000000120e2b080) at SpaceTypesTabController.hpp:48
    frame #126: 0x0000000100ca0715 OpenStudioApp`openstudio::SpaceTypesTabController::~SpaceTypesTabController(this=0x0000000120e2b080) at SpaceTypesTabController.hpp:48
    frame #127: 0x0000000100ca0739 OpenStudioApp`openstudio::SpaceTypesTabController::~SpaceTypesTabController(this=0x0000000120e2b080) at SpaceTypesTabController.hpp:48
    frame #128: 0x00000001000348d5 OpenStudioApp`std::__1::__shared_ptr_pointer<openstudio::StartupMenu*, std::__1::default_delete<openstudio::StartupMenu>, std::__1::allocator<openstudio::StartupMenu> >::__on_zero_shared() [inlined] std::__1::default_delete<openstudio::StartupMenu>::operator(this=0x0000000121211ac8, __ptr=0x0000000120e2b080)(openstudio::StartupMenu*) const at memory:2285
    frame #129: 0x00000001000348ac OpenStudioApp`std::__1::__shared_ptr_pointer<openstudio::StartupMenu*, std::__1::default_delete<openstudio::StartupMenu>, std::__1::allocator<openstudio::StartupMenu> >::__on_zero_shared(this=0x0000000121211ab0) at memory:3586
    frame #130: 0x00000001000267e1 OpenStudioApp`std::__1::shared_ptr<openstudio::detail::Workspace_Impl>::~shared_ptr() [inlined] std::__1::__shared_count::__release_shared(this=0x0000000121211ab0) at memory:3490
    frame #131: 0x0000000100026797 OpenStudioApp`std::__1::shared_ptr<openstudio::detail::Workspace_Impl>::~shared_ptr() [inlined] std::__1::__shared_weak_count::__release_shared(this=0x0000000121211ab0) at memory:3532
    frame #132: 0x0000000100026797 OpenStudioApp`std::__1::shared_ptr<openstudio::detail::Workspace_Impl>::~shared_ptr(this=0x00007ffeefbfa1c8) at memory:4468
    frame #133: 0x000000010000c665 OpenStudioApp`std::__1::shared_ptr<openstudio::StartupMenu>::~shared_ptr(this=0x00007ffeefbfa1c8) at memory:4466
    frame #134: 0x00000001003ccf15 OpenStudioApp`openstudio::OSDocument::createTab(int) [inlined] std::__1::shared_ptr<openstudio::MainTabController>::reset(this=0x0000000120c02b58) at memory:4603
    frame #135: 0x00000001003ccdea OpenStudioApp`openstudio::OSDocument::createTab(this=0x0000000120c02a70, verticalId=7) at OSDocument.cpp:493
    frame #136: 0x00000001003c5433 OpenStudioApp`openstudio::OSDocument::onVerticalTabSelected(this=0x0000000120c02a70, verticalId=7) at OSDocument.cpp:1170
    frame #137: 0x00000001003e3758 OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, void (openstudio::OSDocument::*)(int)>::call(f=90 53 3c 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000120c02a70, arg=0x00007ffeefbfb410)(int), openstudio::OSDocument*, void**) at qobjectdefs_impl.h:501
    frame #138: 0x00000001003e36c3 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::OSDocument::*)(int)>::call<QtPrivate::List<int>, void>(f=90 53 3c 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000120c02a70, arg=0x00007ffeefbfb410)(int), openstudio::OSDocument*, void**) at qobjectdefs_impl.h:520
    frame #139: 0x00000001003e35f6 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::OSDocument::*)(int), QtPrivate::List<int>, void>::impl(which=1, this_=0x0000000120c1cd70, r=0x0000000120c02a70, a=0x00007ffeefbfb410, ret=0x0000000000000000) at qobject_impl.h:143
    frame #140: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #141: 0x0000000100c7c2e9 OpenStudioApp`openstudio::MainWindow::verticalTabSelected(this=0x0000000120c96bd0, _t1=7) at moc_MainWindow.cxx:533
    frame #142: 0x0000000100341a68 OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, void (openstudio::MainWindow::*)(int)>::call(f=a0 c2 c7 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000120c96bd0, arg=0x00007ffeefbfb6a0)(int), openstudio::MainWindow*, void**) at qobjectdefs_impl.h:501
    frame #143: 0x00000001003419d3 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::MainWindow::*)(int)>::call<QtPrivate::List<int>, void>(f=a0 c2 c7 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x0000000120c96bd0, arg=0x00007ffeefbfb6a0)(int), openstudio::MainWindow*, void**) at qobjectdefs_impl.h:520
    frame #144: 0x0000000100341906 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::MainWindow::*)(int), QtPrivate::List<int>, void>::impl(which=1, this_=0x000000011fce5f60, r=0x0000000120c96bd0, a=0x00007ffeefbfb6a0, ret=0x0000000000000000) at qobject_impl.h:143
    frame #145: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #146: 0x0000000100ca6ee6 OpenStudioApp`openstudio::VerticalTabWidget::tabSelected(this=0x000000011fced380, _t1=7) at moc_VerticalTabWidget.cxx:140
    frame #147: 0x00000001009aa4da OpenStudioApp`openstudio::VerticalTabWidget::setCurrentIndex(this=0x000000011fced380, index=7) at VerticalTabWidget.cpp:185
    frame #148: 0x00000001009aa274 OpenStudioApp`openstudio::VerticalTabWidget::select(this=0x000000011fced380) at VerticalTabWidget.cpp:131
    frame #149: 0x00000001009ab02e OpenStudioApp`QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (openstudio::VerticalTabWidget::*)()>::call(f=a0 a0 9a 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x000000011fced380, arg=0x00007ffeefbfbb70)(), openstudio::VerticalTabWidget*, void**) at qobjectdefs_impl.h:501
    frame #150: 0x00000001009aafa3 OpenStudioApp`void QtPrivate::FunctionPointer<void (openstudio::VerticalTabWidget::*)()>::call<QtPrivate::List<>, void>(f=a0 a0 9a 00 01 00 00 00 00 00 00 00 00 00 00 00, o=0x000000011fced380, arg=0x00007ffeefbfbb70)(), openstudio::VerticalTabWidget*, void**) at qobjectdefs_impl.h:520
    frame #151: 0x00000001009aaed6 OpenStudioApp`QtPrivate::QSlotObject<void (openstudio::VerticalTabWidget::*)(), QtPrivate::List<>, void>::impl(which=1, this_=0x00000001212f5060, r=0x000000011fced380, a=0x00007ffeefbfbb70, ret=0x0000000000000000) at qobject_impl.h:143
    frame #152: 0x0000000112480e71 QtCore`QMetaObject::activate(QObject*, int, int, void**) + 705
    frame #153: 0x0000000111c88010 QtWidgets`QAbstractButtonPrivate::emitClicked() + 112
    frame #154: 0x0000000111c87e94 QtWidgets`QAbstractButtonPrivate::click() + 260
    frame #155: 0x0000000111c88f0e QtWidgets`QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 270
    frame #156: 0x0000000111bdce18 QtWidgets`QWidget::event(QEvent*) + 1656
    frame #157: 0x0000000111c88c5f QtWidgets`QAbstractButton::event(QEvent*) + 175
    frame #158: 0x0000000111b9bec6 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #159: 0x0000000111b9f79d QtWidgets`QApplication::notify(QObject*, QEvent*) + 9549
    frame #160: 0x00000001003b75a0 OpenStudioApp`openstudio::OSAppBase::notify(this=0x00007ffeefbfe5a8, receiver=0x00000001212f4680, e=0x00007ffeefbfc3f8) at OSAppBase.cpp:80
    frame #161: 0x0000000100020d0a OpenStudioApp`openstudio::OpenStudioApp::notify(this=0x00007ffeefbfe5a8, receiver=0x00000001212f4680, event=0x00007ffeefbfc3f8) at OpenStudioApp.cpp:967
    frame #162: 0x000000011244dce4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #163: 0x0000000111b9c898 QtWidgets`QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) + 968
    frame #164: 0x0000000111bfe227 QtWidgets`QWidgetWindow::handleMouseEvent(QMouseEvent*) + 1383
    frame #165: 0x0000000111bfd211 QtWidgets`QWidgetWindow::event(QEvent*) + 177
    frame #166: 0x0000000111b9bec6 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #167: 0x0000000111b9e985 QtWidgets`QApplication::notify(QObject*, QEvent*) + 5941
    frame #168: 0x00000001003b75a0 OpenStudioApp`openstudio::OSAppBase::notify(this=0x00007ffeefbfe5a8, receiver=0x000000012140ca40, e=0x00007ffeefbfca68) at OSAppBase.cpp:80
    frame #169: 0x0000000100020d0a OpenStudioApp`openstudio::OpenStudioApp::notify(this=0x00007ffeefbfe5a8, receiver=0x000000012140ca40, event=0x00007ffeefbfca68) at OpenStudioApp.cpp:967
    frame #170: 0x000000011244dce4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #171: 0x00000001128bb4da QtGui`QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 2794
    frame #172: 0x00000001128a484b QtGui`QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 155
    frame #173: 0x0000000113d24121 libqcocoa.dylib`QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) + 33
    frame #174: 0x00007fff28062011 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #175: 0x00007fff281198ec CoreFoundation`__CFRunLoopDoSource0 + 108
    frame #176: 0x00007fff28044fc0 CoreFoundation`__CFRunLoopDoSources0 + 208
    frame #177: 0x00007fff2804443d CoreFoundation`__CFRunLoopRun + 1293
    frame #178: 0x00007fff28043c97 CoreFoundation`CFRunLoopRunSpecific + 487
    frame #179: 0x00007fff27323d96 HIToolbox`RunCurrentEventLoopInMode + 286
    frame #180: 0x00007fff27323a0f HIToolbox`ReceiveNextEventCommon + 366
    frame #181: 0x00007fff27323884 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 64
    frame #182: 0x00007fff255d3a73 AppKit`_DPSNextEvent + 2085
    frame #183: 0x00007fff25d69e34 AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
    frame #184: 0x00007fff255c8885 AppKit`-[NSApplication run] + 764
    frame #185: 0x0000000113d2301f libqcocoa.dylib`QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2191
    frame #186: 0x000000011244a0b1 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 401
    frame #187: 0x000000011244e355 QtCore`QCoreApplication::exec() + 341
    frame #188: 0x0000000100006a83 OpenStudioApp`main(argc=1, argv=0x00007ffeefbfede8) at main.cpp:218
    frame #189: 0x00007fff50011015 libdyld.dylib`start + 1
    frame #190: 0x00007fff50011015 libdyld.dylib`start + 1
(lldb) 

@macumber macumber added this to the OpenStudio 2.8.1 milestone Apr 30, 2019
@macumber macumber added this to Current Backlog in OpenStudio May 7, 2019
@macumber macumber assigned kbenne and unassigned jmarrec May 17, 2019
kbenne added a commit that referenced this issue May 23, 2019
The issue stems from the destructor of OSEdit classes
calling unbind. The unbind method does three things.

1. resets the member variables related to the ModelObject that is bound
2. removes some qt signal connections
3. calls setEnabled(false)

You can see these steps here https://github.com/NREL/OpenStudio/blob/1ae1cec65b25421bd2dabcb7501618a00338645b/openstudiocore/src/shared_gui_components/OSLineEdit.cpp#L152

During destruction of the widget it is item 3 that causes the issue,
because as the widget calls the setEnabled method, the focus event is triggered
and that causes a bunch of refreshing logic that we don't want because the overall
view is in a half destroyed state.

The solution is simply to not call unbind when the OSEdit classes are destroyed.
This is defensbile because

1. member state does not need to be reset because it is soon to be destroyed.
2. qt connections will be removed by QObject destructor https://doc.qt.io/archives/qt-4.8/qobject.html#dtor.QObject
3. setEnable (the source of the issue) does not need to be called because the widget is soon to be
nuked anyway.

close #3434
OpenStudio automation moved this from Current Backlog to Done May 25, 2019
@macumber macumber assigned DavidGoldwasser and unassigned kbenne May 31, 2019
@macumber
Copy link
Contributor

Assigned to @DavidGoldwasser to accept

@DavidGoldwasser
Copy link
Collaborator Author

:) spot checked in 2.8.1

@macumber macumber moved this from Done to Accepted in OpenStudio Jul 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants