Bug #2163
SIGSEGV when assigning a WFitLayout to WDialog::contents() [version 3.3.1rc1]
Start date:
08/29/2013
Due date:
% Done:
0%
Estimated time:
Description
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
Files
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); dlg->show(); }
Updated by Koen Deforche almost 9 years ago
- Status changed from New to Feedback
- Assignee set to Koen Deforche
Hey,
The WFitLayout cannot be used for a WContainerWidget:
http://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WFitLayout.html#details
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.
Regards,
koen
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 over 7 years ago
- Status changed from InProgress to Resolved
- Assignee set to Koen Deforche