Bug #2163

SIGSEGV when assigning a WFitLayout to WDialog::contents() [version 3.3.1rc1]

Added by Roman Puls almost 9 years ago. Updated over 7 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


When creating a WFitLayout with parent WDialog::contents(), the application crashes with a SIGSEGV.

I have modified the hello-word application to pop-up a dialog after during the greeting callback.

Here's also a gdb print of what's going on:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb07ffb40 (LWP 10476)]
Wt::StdLayoutImpl::setContainer (this=0x0, c=0xb18048c8) at /home/puls/install/wt-3.3.1-rc1/src/Wt/StdLayoutImpl.C:67
67        containerAddWidgets(container_);

(gdb) print this
$1 = (Wt::StdLayoutImpl * const) 0x0

(gdb) bt
#0  Wt::StdLayoutImpl::setContainer (this=0x0, c=0xb18048c8) at /home/puls/install/wt-3.3.1-rc1/src/Wt/StdLayoutImpl.C:67
#1  0xb7ab3e67 in Wt::WContainerWidget::setLayout (this=0xb18048c8, layout=0xb1804bc0, alignment=...)
    at /home/puls/install/wt-3.3.1-rc1/src/Wt/WContainerWidget.C:103
#2  0xb7ab3f63 in Wt::WContainerWidget::setLayout (this=0xb18048c8, layout=0xb1804bc0)
    at /home/puls/install/wt-3.3.1-rc1/src/Wt/WContainerWidget.C:76
#3  0xb7b3b33a in Wt::WLayout::setLayoutInParent (this=0xb1804bc0, parent=0xb18048c8) at /home/puls/install/wt-3.3.1-rc1/src/Wt/WLayout.C:155
#4  0xb7aebf42 in Wt::WFitLayout::WFitLayout (this=0xb1804bc0, parent=0xb18048c8) at /home/puls/install/wt-3.3.1-rc1/src/Wt/WFitLayout.C:19
#5  0x0804c2c9 in HelloApplication::greet (this=0xb46039e8) at /home/puls/install/wt-3.3.1-rc1/examples/hello/hello.C:89
#6  0xb7c303ad in operator() (a0=..., this=<optimized out>) at /usr/include/boost/function/function_template.hpp:760
#7  operator()<boost::signals::detail::connection_slot_pair> (slot=..., this=<optimized out>) at /usr/include/boost/signals/signal_template.hpp:119
#8  dereference (this=<optimized out>) at /usr/include/boost/signals/detail/slot_call_iterator.hpp:61
#9  dereference<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Wt::WMouseEvent, boost::function<void(Wt::WMouseEvent)> >, boost::signals::detail::named_slot_map_iterator> > (f=...) at /usr/include/boost/iterator/iterator_facade.hpp:517
#10 operator* (this=<optimized out>) at /usr/include/boost/iterator/iterator_facade.hpp:643
#11 postfix_increment_proxy (x=..., this=<optimized out>) at /usr/include/boost/iterator/iterator_facade.hpp:145
#12 operator++<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Wt::WMouseEvent, boost::function<void(Wt::WMouseEvent)> >, boost::signals::detail::named_slot_map_iterator>, boost::signals::detail::unusable, boost::single_pass_traversal_tag, const boost::signals::detail::unusable&, int> (i=...) at /usr/include/boost/iterator/iterator_facade.hpp:732
#13 operator()<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Wt::WMouseEvent, boost::function<void(Wt::WMouseEvent)> >, boost::signals::detail::named_slot_map_iterator> > (last=..., first=..., this=<optimized out>)
    at /usr/include/boost/last_value.hpp:49
#14 boost::signal1<void, Wt::WMouseEvent, boost::last_value<void>, int, std::less<int>, boost::function<void (Wt::WMouseEvent)> >::operator()(Wt::WMouseEvent) (this=0xb07fc838, a1=<error reading variable: Cannot access memory at address 0x0>) at /usr/include/boost/signals/signal_template.hpp:354
#15 0xb7c3057f in Wt::EventSignal<Wt::WMouseEvent>::processDynamic (this=0xb4607268, jse=...) at /home/puls/install/wt-3.3.1-rc1/src/Wt/WSignal:1142
#16 0xb7d3e006 in Wt::WebSession::processSignal (this=0xb1800d78, s=0xb4607268, se="", request=..., kind=Wt::WebSession::Dynamic)
    at /home/puls/install/wt-3.3.1-rc1/src/web/WebSession.C:2617


hello.C (3.25 KB) hello.C modified hello.C version Roman Puls, 08/29/2013 12:16 PM

Updated by Roman Puls almost 9 years ago

here's the offending code:

void HelloApplication::greet()

   * Update the text, using text input into the nameEdit_ field.
  greeting_->setText("Hello there, " + nameEdit_->text());

  WDialog *dlg = new WDialog();

  // application crashes within next instruction:
  WFitLayout *layout = new WFitLayout(dlg->contents());
  dlg->contents()->addWidget(new WText(nameEdit_->text()));
  dlg->resize(640, 480);

Updated by Koen Deforche almost 9 years ago

  • Status changed from New to Feedback
  • Assignee set to Koen Deforche


The WFitLayout cannot be used for a WContainerWidget:

We have been deprecating Wt::Ext for a long time now, so its removal is imminent and at that point we might implement WFitLayout for WContainerWidget.




Updated by Koen Deforche over 8 years ago

  • Target version changed from 3.3.1 to 3.3.2

Updated by Koen Deforche over 8 years ago

  • Status changed from Feedback to InProgress
  • Assignee deleted (Koen Deforche)
  • Target version changed from 3.3.2 to 3.3.3

Updated by Koen Deforche about 8 years ago

  • Target version changed from 3.3.3 to 3.3.4

Updated by Koen Deforche over 7 years ago

  • Status changed from InProgress to Resolved
  • Assignee set to Koen Deforche

Updated by Koen Deforche over 7 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF