Project

General

Profile

WFiledropWidget file leaks

Added by Emeric Poupon about 1 year ago

Hello,

I am binding a WFileDropwidget in a WTemplate.
When the user changes the url for whatever reason, the template is deleted and another template is rendered.
Unfortunately, uploaded files stay in the tmp storage.

More annoying, if I delete the template while an upload is in progress, I hit this segfault:

Maybe I am doing something wrong?


Replies (8)

RE: WFiledropWidget file leaks - Added by Emeric Poupon about 1 year ago

In this part of code:

  virtual void handleRequest(const Http::Request &request,
                 Http::Response &response) override
  {
    // In JWt we still have the update lock
#ifndef WT_TARGET_JAVA
    /**
     * Taking the update-lock (rather than posting to the event loop):
     *   - guarantee that the updates to WFileDropWidget happen immediately,
     *     before any application-code is called by the finished upload.
     *   - only Wt-code is executed within this lock
     */
    WApplication::UpdateLock lock(WApplication::instance());
#endif // WT_TARGET_JAVA

    const std::string *fileId = request.getParameter("file-id");
    if (fileId == 0 || (*fileId).empty()) {
      response.setStatus(404);
      return;
    }
    int id = boost::lexical_cast<int>(*fileId);
    bool validId = parent_->incomingIdCheck(id);
    ...

How can you make sure parent_ is still valid after the WApplication::UpdateLock has been taken?
AFAIU we need to store parent_ as a weak_ptr and test it once the update lock has been acquired?

RE: WFiledropWidget file leaks - Added by Roel Standaert about 1 year ago

Hm, there may indeed be an issue there. In any case, resource_ does seem to leak in Wt 4.

RE: WFiledropWidget file leaks - Added by Roel Standaert about 1 year ago

Do you have some code example? Or could you maybe reproduce the issue when using memcheck? That would help catch the issue.

RE: WFiledropWidget file leaks - Added by Emeric Poupon about 1 year ago

Hi!

Yes, here are the relevant errors got with valgrind:

==27112== Invalid read of size 8
==27112==    at 0x4F5FE91: Wt::Signals::Impl::ProtoSignal<Wt::WFileDropWidget::File*>::emit(Wt::WFileDropWidget::File*) const (signals.hpp:218)
==27112==    by 0x4F58AFA: emit (WSignal.h:760)
==27112==    by 0x4F58AFA: Wt::WFileDropWidget::emitUploaded(int) (WFileDropWidget.C:373)
==27112==    by 0x4F47347: operator() (std_function.h:687)
==27112==    by 0x4F47347: Wt::Signals::Impl::ProtoSignal<int>::emit(int) const (signals.hpp:242)
==27112==    by 0x4F47670: emit (WJavaScript.h:505)
==27112==    by 0x4F47670: doEmit<0> (WJavaScript.h:596)
==27112==    by 0x4F47670: dispatch (WJavaScript.h:591)
==27112==    by 0x4F47670: Wt::JSignal<int>::processDynamic(Wt::JavaScriptEvent const&) const (WJavaScript.h:607)
==27112==    by 0x529ACE5: Wt::WebSession::processSignal(Wt::EventSignalBase*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Wt::W             ebRequest const&, Wt::WebSession::SignalKind) (WebSession.C:3006)
==27112==    by 0x52A4631: Wt::WebSession::notifySignal(Wt::WEvent const&) (WebSession.C:2978)
==27112==    by 0x52A5AF1: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2560)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_ho             ok.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebControll             er::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>              >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==  Address 0xbeb2ba8 is 1,336 bytes inside a block of size 1,432 free'd
==27112==    at 0x4836EAB: operator delete(void*) (vg_replace_malloc.c:576)
==27112==    by 0x509998D: operator() (unique_ptr.h:81)
==27112==    by 0x509998D: ~unique_ptr (unique_ptr.h:274)
==27112==    by 0x509998D: ~pair (stl_pair.h:208)
==27112==    by 0x509998D: destroy<std::pair<const std::__cxx11::basic_string<char>, std::unique_ptr<Wt::WWidget> > > (new_allocator.h:140)
==27112==    by 0x509998D: destroy<std::pair<const std::__cxx11::basic_string<char>, std::unique_ptr<Wt::WWidget> > > (alloc_traits.h:487)
==27112==    by 0x509998D: _M_destroy_node (stl_tree.h:661)
==27112==    by 0x509998D: _M_drop_node (stl_tree.h:669)
==27112==    by 0x509998D: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::ch             ar_traits<char>, std::allocator<char> > const, std::unique_ptr<Wt::WWidget, std::default_delete<Wt::WWidget> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char,              std::char_traits<char>, std::allocator<char> > const, std::unique_ptr<Wt::WWidget, std::default_delete<Wt::WWidget> > > >, std::less<std::__cxx11::basic_string<char, std::             char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::unique_ptr             <Wt::WWidget, std::default_delete<Wt::WWidget> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>              > const, std::unique_ptr<Wt::WWidget, std::default_delete<Wt::WWidget> > > >*) (stl_tree.h:1874)
==27112==    by 0x5095275: clear (stl_tree.h:1187)
==27112==    by 0x5095275: clear (stl_map.h:1133)
==27112==    by 0x5095275: Wt::WTemplate::clear() (WTemplate.C:204)
==27112==    by 0x509536F: Wt::WTemplate::~WTemplate() (WTemplate.C:190)
==27112==    by 0x1AFCDF: Wt::WTemplateFormView::~WTemplateFormView() (WTemplateFormView.h:87)
==27112==    by 0x1B10F7: UserInterface::ShareCreateFormView::~ShareCreateFormView() (ShareCreate.cpp:353)
==27112==    by 0x1B1113: UserInterface::ShareCreateFormView::~ShareCreateFormView() (ShareCreate.cpp:364)
==27112==    by 0x4F2416E: operator() (unique_ptr.h:81)
==27112==    by 0x4F2416E: ~unique_ptr (unique_ptr.h:274)
==27112==    by 0x4F2416E: Wt::WContainerWidget::clear() (WContainerWidget.C:203)
==27112==    by 0x4F24313: Wt::WContainerWidget::~WContainerWidget() (WContainerWidget.C:49)
==27112==    by 0x5064C66: ~WStackedWidget (WStackedWidget.h:35)
==27112==    by 0x5064C66: Wt::WStackedWidget::~WStackedWidget() (WStackedWidget.h:35)
==27112==    by 0x4F2416E: operator() (unique_ptr.h:81)
==27112==    by 0x4F2416E: ~unique_ptr (unique_ptr.h:274)
==27112==    by 0x4F2416E: Wt::WContainerWidget::clear() (WContainerWidget.C:203)
==27112==    by 0x1ABAFE: UserInterface::ShareCreate::displayCreate()::{lambda(UserInterface::ShareParameters const&)#3}::operator()(UserInterface::ShareParameters const&)              const (ShareCreate.cpp:634)
==27112==  Block was alloc'd at
==27112==    at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==27112==    by 0x1B2CAC: Wt::WFileDropWidget* Wt::WTemplate::bindNew<Wt::WFileDropWidget>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > c             onst&) (WTemplate.h:500)
==27112==    by 0x1B08D3: UserInterface::ShareCreateFormView::ShareCreateFormView() (ShareCreate.cpp:264)
==27112==    by 0x1B3F61: UserInterface::ShareCreateFormView* Wt::WContainerWidget::addNew<UserInterface::ShareCreateFormView>() (WContainerWidget.h:256)
==27112==    by 0x1ABD38: UserInterface::ShareCreate::displayCreate() (ShareCreate.cpp:614)
==27112==    by 0x1AB6D4: UserInterface::ShareCreate::refresh() (ShareCreate.cpp:586)
==27112==    by 0x1AB3D2: UserInterface::ShareCreate::ShareCreate()::{lambda()#1}::operator()() const (ShareCreate.cpp:560)
==27112==    by 0x1AD568: std::_Function_handler<void (), UserInterface::ShareCreate::ShareCreate()::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:297)
==27112==    by 0x1A4C97: std::function<void ()>::operator()() const (std_function.h:687)
==27112==    by 0x1A3AD1: Wt::Signals::Impl::ConnectHelper<0, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::connect(Wt::Signals::Signal             <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, Wt::Core::observable const*, std::function<void ()>&&)::{lambda(std::__cxx11::basic_str             ing<char, std::char_traits<char>, std::allocator<char> >)#1}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const (signals.hpp             :341)
==27112==    by 0x1A5C84: std::_Function_handler<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), Wt::Signals::Impl::ConnectHelper<0,              std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::connect(Wt::Signals::Signal<std::__cxx11::basic_string<char, std::char_traits<char>, std             ::allocator<char> > >&, Wt::Core::observable const*, std::function<void ()>&&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#1}>             ::_M_invoke(std::_Any_data const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (std_function.h:297)
==27112==    by 0x4EF685B: operator() (std_function.h:687)
==27112==    by 0x4EF685B: Wt::Signals::Impl::ProtoSignal<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::emit(std::__cxx11::basic_string             <char, std::char_traits<char>, std::allocator<char> >) const (signals.hpp:242)


==27112== Invalid read of size 4
==27112==    at 0x4F58AFB: Wt::WFileDropWidget::emitUploaded(int) (WFileDropWidget.C:369)
==27112==    by 0x4F47347: operator() (std_function.h:687)
==27112==    by 0x4F47347: Wt::Signals::Impl::ProtoSignal<int>::emit(int) const (signals.hpp:242)
==27112==    by 0x4F47670: emit (WJavaScript.h:505)
==27112==    by 0x4F47670: doEmit<0> (WJavaScript.h:596)
==27112==    by 0x4F47670: dispatch (WJavaScript.h:591)
==27112==    by 0x4F47670: Wt::JSignal<int>::processDynamic(Wt::JavaScriptEvent const&) const (WJavaScript.h:607)
==27112==    by 0x529ACE5: Wt::WebSession::processSignal(Wt::EventSignalBase*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Wt::W             ebRequest const&, Wt::WebSession::SignalKind) (WebSession.C:3006)
==27112==    by 0x52A4631: Wt::WebSession::notifySignal(Wt::WEvent const&) (WebSession.C:2978)
==27112==    by 0x52A5AF1: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2560)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_ho             ok.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebControll             er::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>              >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==    by 0x54D2FA2: start_thread (pthread_create.c:486)
==27112==  Address 0xbeb27f8 is 392 bytes inside a block of size 1,432 free'd
==27112==    at 0x4836EAB: operator delete(void*) (vg_replace_malloc.c:576)
==27112==    by 0x509998D: operator() (unique_ptr.h:81)
==27112==    by 0x509998D: ~unique_ptr (unique_ptr.h:274)
==27112==    by 0x509998D: ~pair (stl_pair.h:208)
==27112==    by 0x509998D: destroy<std::pair<const std::__cxx11::basic_string<char>, std::unique_ptr<Wt::WWidget> > > (new_allocator.h:140)
==27112==    by 0x509998D: destroy<std::pair<const std::__cxx11::basic_string<char>, std::unique_ptr<Wt::WWidget> > > (alloc_traits.h:487)
==27112==    by 0x509998D: _M_destroy_node (stl_tree.h:661)
==27112==    by 0x509998D: _M_drop_node (stl_tree.h:669)
==27112==    by 0x509998D: std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::ch             ar_traits<char>, std::allocator<char> > const, std::unique_ptr<Wt::WWidget, std::default_delete<Wt::WWidget> > >, std::_Select1st<std::pair<std::__cxx11::basic_string<char,              std::char_traits<char>, std::allocator<char> > const, std::unique_ptr<Wt::WWidget, std::default_delete<Wt::WWidget> > > >, std::less<std::__cxx11::basic_string<char, std::             char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::unique_ptr             <Wt::WWidget, std::default_delete<Wt::WWidget> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>              > const, std::unique_ptr<Wt::WWidget, std::default_delete<Wt::WWidget> > > >*) (stl_tree.h:1874)
==27112==    by 0x5095275: clear (stl_tree.h:1187)
==27112==    by 0x5095275: clear (stl_map.h:1133)
==27112==    by 0x5095275: Wt::WTemplate::clear() (WTemplate.C:204)
==27112==    by 0x509536F: Wt::WTemplate::~WTemplate() (WTemplate.C:190)
==27112==    by 0x1AFCDF: Wt::WTemplateFormView::~WTemplateFormView() (WTemplateFormView.h:87)
==27112==    by 0x1B10F7: UserInterface::ShareCreateFormView::~ShareCreateFormView() (ShareCreate.cpp:353)
==27112==    by 0x1B1113: UserInterface::ShareCreateFormView::~ShareCreateFormView() (ShareCreate.cpp:364)
==27112==    by 0x4F2416E: operator() (unique_ptr.h:81)
==27112==    by 0x4F2416E: ~unique_ptr (unique_ptr.h:274)
==27112==    by 0x4F2416E: Wt::WContainerWidget::clear() (WContainerWidget.C:203)
==27112==    by 0x4F24313: Wt::WContainerWidget::~WContainerWidget() (WContainerWidget.C:49)
==27112==    by 0x5064C66: ~WStackedWidget (WStackedWidget.h:35)
==27112==    by 0x5064C66: Wt::WStackedWidget::~WStackedWidget() (WStackedWidget.h:35)
==27112==    by 0x4F2416E: operator() (unique_ptr.h:81)
==27112==    by 0x4F2416E: ~unique_ptr (unique_ptr.h:274)
==27112==    by 0x4F2416E: Wt::WContainerWidget::clear() (WContainerWidget.C:203)
==27112==    by 0x1ABAFE: UserInterface::ShareCreate::displayCreate()::{lambda(UserInterface::ShareParameters const&)#3}::operator()(UserInterface::ShareParameters const&)              const (ShareCreate.cpp:634)
==27112==  Block was alloc'd at
==27112==    at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==27112==    by 0x1B2CAC: Wt::WFileDropWidget* Wt::WTemplate::bindNew<Wt::WFileDropWidget>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > c             onst&) (WTemplate.h:500)
==27112==    by 0x1B08D3: UserInterface::ShareCreateFormView::ShareCreateFormView() (ShareCreate.cpp:264)
==27112==    by 0x1B3F61: UserInterface::ShareCreateFormView* Wt::WContainerWidget::addNew<UserInterface::ShareCreateFormView>() (WContainerWidget.h:256)
==27112==    by 0x1ABD38: UserInterface::ShareCreate::displayCreate() (ShareCreate.cpp:614)
==27112==    by 0x1AB6D4: UserInterface::ShareCreate::refresh() (ShareCreate.cpp:586)
==27112==    by 0x1AB3D2: UserInterface::ShareCreate::ShareCreate()::{lambda()#1}::operator()() const (ShareCreate.cpp:560)
==27112==    by 0x1AD568: std::_Function_handler<void (), UserInterface::ShareCreate::ShareCreate()::{lambda()#1}>::_M_invoke(std::_Any_data const&) (std_function.h:297)
==27112==    by 0x1A4C97: std::function<void ()>::operator()() const (std_function.h:687)
==27112==    by 0x1A3AD1: Wt::Signals::Impl::ConnectHelper<0, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::connect(Wt::Signals::Signal             <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, Wt::Core::observable const*, std::function<void ()>&&)::{lambda(std::__cxx11::basic_str             ing<char, std::char_traits<char>, std::allocator<char> >)#1}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const (signals.hpp             :341)
==27112==    by 0x1A5C84: std::_Function_handler<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), Wt::Signals::Impl::ConnectHelper<0,              std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::connect(Wt::Signals::Signal<std::__cxx11::basic_string<char, std::char_traits<char>, std             ::allocator<char> > >&, Wt::Core::observable const*, std::function<void ()>&&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)#1}>             ::_M_invoke(std::_Any_data const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) (std_function.h:297)
==27112==    by 0x4EF685B: operator() (std_function.h:687)
==27112==    by 0x4EF685B: Wt::Signals::Impl::ProtoSignal<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::emit(std::__cxx11::basic_string             <char, std::char_traits<char>, std::allocator<char> >) const (signals.hpp:242)

==27112== Invalid read of size 8
==27112==    at 0x4F584E7: size (stl_vector.h:806)
==27112==    by 0x4F584E7: Wt::WFileDropWidget::incomingIdCheck(int) (WFileDropWidget.C:380)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==    by 0x54D2FA2: start_thread (pthread_create.c:486)
==27112==    by 0x59064CE: clone (clone.S:95)
==27112==  Address 0x62a5fc8 is 7 bytes after a block of size 17 alloc'd
==27112==    at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==27112==    by 0x147863: __gnu_cxx::new_allocator<char>::allocate(unsigned long, void const*) (new_allocator.h:111)
==27112==    by 0x144D51: std::allocator_traits<std::allocator<char> >::allocate(std::allocator<char>&, unsigned long) (alloc_traits.h:436)
==27112==    by 0x148099: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long) (basic_string.tcc:153)
==27112==    by 0x14B436: void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag) (basic_string.tcc:219)
==27112==    by 0x520671A: _M_construct_aux<char*> (basic_string.h:236)
==27112==    by 0x520671A: _M_construct<char*> (basic_string.h:255)
==27112==    by 0x520671A: basic_string (basic_string.h:440)
==27112==    by 0x520671A: construct<std::__cxx11::basic_string<char>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&> (new_allocator.h:136)
==27112==    by 0x520671A: construct<std::__cxx11::basic_string<char>, const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&> (alloc_traits.h:475)
==27112==    by 0x520671A: push_back (stl_vector.h:1079)
==27112==    by 0x520671A: Wt::Http::Request::parseFormUrlEncoded(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >&) (Request.C:405)
==27112==    by 0x525DBC3: Wt::CgiParser::parse(Wt::WebRequest&, Wt::CgiParser::ReadOption) (CgiParser.C:235)
==27112==    by 0x528FAEE: Wt::WebController::requestDataReceived(Wt::WebRequest*, unsigned long, unsigned long) (WebController.C:458)
==27112==    by 0x4B49B5D: http::server::WtReply::consumeRequestBody(char const*, char const*, http::server::Request::State) (WtReply.C:184)
==27112==    by 0x4B4AA78: http::server::WtReply::consumeData(char const*, char const*, http::server::Request::State) (WtReply.C:138)
==27112==    by 0x4B062B3: http::server::RequestParser::parseBody(http::server::Request&, std::shared_ptr<http::server::Reply>, char*&, char*) (RequestParser.C:217)
==27112==    by 0x4AD960C: http::server::Connection::handleReadBody(std::shared_ptr<http::server::Reply>) (Connection.C:307)

==27112== Invalid read of size 4
==27112==    at 0x4F584F0: Wt::WFileDropWidget::incomingIdCheck(int) (WFileDropWidget.C:380)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==    by 0x54D2FA2: start_thread (pthread_create.c:486)
==27112==    by 0x59064CE: clone (clone.S:95)
==27112==  Address 0x62a5bd8 is 24 bytes after a block of size 48 in arena "client"
==27112==
==27112== Conditional jump or move depends on uninitialised value(s)
==27112==    at 0x4F58501: Wt::WFileDropWidget::incomingIdCheck(int) (WFileDropWidget.C:380)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==    by 0x54D2FA2: start_thread (pthread_create.c:486)
==27112==    by 0x59064CE: clone (clone.S:95)
==27112==
==27112== Use of uninitialised value of size 8
==27112==    at 0x4F58503: Wt::WFileDropWidget::incomingIdCheck(int) (WFileDropWidget.C:386)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==    by 0x54D2FA2: start_thread (pthread_create.c:486)
==27112==    by 0x59064CE: clone (clone.S:95)
==27112==
==27112== Invalid read of size 8
==27112==    at 0x4F58503: Wt::WFileDropWidget::incomingIdCheck(int) (WFileDropWidget.C:386)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==    by 0x54D2FA2: start_thread (pthread_create.c:486)
==27112==    by 0x59064CE: clone (clone.S:95)
==27112==  Address 0x17236e80 is not stack'd, malloc'd or (recently) free'd
==27112==
==27112==
==27112== Process terminating with default action of signal 11 (SIGSEGV)
==27112==  Access not within mapped region at address 0x17236E80
==27112==    at 0x4F58503: Wt::WFileDropWidget::incomingIdCheck(int) (WFileDropWidget.C:386)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==    by 0x54D2FA2: start_thread (pthread_create.c:486)
==27112==    by 0x59064CE: clone (clone.S:95)
==27112==  If you believe this happened as a result of a stack
==27112==  overflow in your program's main thread (unlikely but
==27112==  possible), you can try to increase the size of the
==27112==  main thread stack using the --main-stacksize= flag.
==27112==  The main thread stack size used in this run was 8388608.
==27112== Mismatched free() / delete / delete []
==27112==    at 0x48369AB: free (vg_replace_malloc.c:530)
==27112==    by 0x6061629: check_free (dlerror.c:202)
==27112==    by 0x6061629: check_free (dlerror.c:186)
==27112==    by 0x6061AB1: free_key_mem (dlerror.c:221)
==27112==    by 0x6061AB1: __dlerror_main_freeres (dlerror.c:239)
==27112==    by 0x5975B71: __libc_freeres (in /lib/x86_64-linux-gnu/libc-2.28.so)
==27112==    by 0x482B19E: _vgnU_freeres (vg_preloaded.c:77)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==  Address 0x6216dc0 is 0 bytes inside a block of size 312 alloc'd
==27112==    at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==27112==    by 0x5F7CD8D: boost::detail::make_external_thread_data() (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5F7E416: boost::detail::add_new_tss_node(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5F7E5B4: boost::detail::set_tss_data(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*, bool) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5297ECC: reset (tss.hpp:105)
==27112==    by 0x5297ECC: get_definition<Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::parser_context<>, boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.ipp:226)
==27112==    by 0x5297ECC: grammar_parser_parse<0, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::parser_context<>, boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.ipp:272)
==27112==    by 0x5297ECC: parse_main<boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.hpp:57)
==27112==    by 0x5297ECC: parse<boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.hpp:65)
==27112==    by 0x5297ECC: parse<char const*, Wt::(anonymous namespace)::ValueListParser> (skipper.ipp:133)
==27112==    by 0x5297ECC: parse<char const*, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::space_parser> (skipper.ipp:155)
==27112==    by 0x5297ECC: parse<char, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::space_parser> (skipper.ipp:173)
==27112==    by 0x5297ECC: Wt::WebRequest::parsePreferredAcceptValue[abi:cxx11](char const*) const (WebRequest.C:255)
==27112==    by 0x5299D21: Wt::WebRequest::parseLocale() const (WebRequest.C:283)
==27112==    by 0x4F50C4C: Wt::WEnvironment::init(Wt::WebRequest const&) (WEnvironment.C:212)
==27112==    by 0x529E3EA: Wt::WebSession::init(Wt::WebRequest const&) (WebSession.C:374)
==27112==    by 0x529F8F7: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1412)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==
==27112== Invalid write of size 8
==27112==    at 0x606162A: check_free (dlerror.c:203)
==27112==    by 0x606162A: check_free (dlerror.c:186)
==27112==    by 0x6061AB1: free_key_mem (dlerror.c:221)
==27112==    by 0x6061AB1: __dlerror_main_freeres (dlerror.c:239)
==27112==    by 0x5975B71: __libc_freeres (in /lib/x86_64-linux-gnu/libc-2.28.so)
==27112==    by 0x482B19E: _vgnU_freeres (vg_preloaded.c:77)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==  Address 0x6216dd8 is 24 bytes inside a block of size 312 free'd
==27112==    at 0x48369AB: free (vg_replace_malloc.c:530)
==27112==    by 0x6061629: check_free (dlerror.c:202)
==27112==    by 0x6061629: check_free (dlerror.c:186)
==27112==    by 0x6061AB1: free_key_mem (dlerror.c:221)
==27112==    by 0x6061AB1: __dlerror_main_freeres (dlerror.c:239)
==27112==    by 0x5975B71: __libc_freeres (in /lib/x86_64-linux-gnu/libc-2.28.so)
==27112==    by 0x482B19E: _vgnU_freeres (vg_preloaded.c:77)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==  Block was alloc'd at
==27112==    at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==27112==    by 0x5F7CD8D: boost::detail::make_external_thread_data() (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5F7E416: boost::detail::add_new_tss_node(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5F7E5B4: boost::detail::set_tss_data(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*, bool) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5297ECC: reset (tss.hpp:105)
==27112==    by 0x5297ECC: get_definition<Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::parser_context<>, boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.ipp:226)
==27112==    by 0x5297ECC: grammar_parser_parse<0, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::parser_context<>, boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.ipp:272)
==27112==    by 0x5297ECC: parse_main<boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.hpp:57)
==27112==    by 0x5297ECC: parse<boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.hpp:65)
==27112==    by 0x5297ECC: parse<char const*, Wt::(anonymous namespace)::ValueListParser> (skipper.ipp:133)
==27112==    by 0x5297ECC: parse<char const*, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::space_parser> (skipper.ipp:155)
==27112==    by 0x5297ECC: parse<char, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::space_parser> (skipper.ipp:173)
==27112==    by 0x5297ECC: Wt::WebRequest::parsePreferredAcceptValue[abi:cxx11](char const*) const (WebRequest.C:255)
==27112==    by 0x5299D21: Wt::WebRequest::parseLocale() const (WebRequest.C:283)
==27112==    by 0x4F50C4C: Wt::WEnvironment::init(Wt::WebRequest const&) (WEnvironment.C:212)
==27112==    by 0x529E3EA: Wt::WebSession::init(Wt::WebRequest const&) (WebSession.C:374)
==27112==    by 0x529F8F7: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1412)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==
==27112== Invalid free() / delete / delete[] / realloc()
==27112==    at 0x48369AB: free (vg_replace_malloc.c:530)
==27112==    by 0x6061AB9: free_key_mem (dlerror.c:223)
==27112==    by 0x6061AB9: __dlerror_main_freeres (dlerror.c:239)
==27112==    by 0x5975B71: __libc_freeres (in /lib/x86_64-linux-gnu/libc-2.28.so)
==27112==    by 0x482B19E: _vgnU_freeres (vg_preloaded.c:77)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==    by 0x55A7B2E: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==27112==  Address 0x6216dc0 is 0 bytes inside a block of size 312 free'd
==27112==    at 0x48369AB: free (vg_replace_malloc.c:530)
==27112==    by 0x6061629: check_free (dlerror.c:202)
==27112==    by 0x6061629: check_free (dlerror.c:186)
==27112==    by 0x6061AB1: free_key_mem (dlerror.c:221)
==27112==    by 0x6061AB1: __dlerror_main_freeres (dlerror.c:239)
==27112==    by 0x5975B71: __libc_freeres (in /lib/x86_64-linux-gnu/libc-2.28.so)
==27112==    by 0x482B19E: _vgnU_freeres (vg_preloaded.c:77)
==27112==    by 0x4F6120E: Wt::WFileDropWidget::WFileDropUploadResource::handleRequest(Wt::Http::Request const&, Wt::Http::Response&) (WFileDropWidget.C:65)
==27112==    by 0x5047BE2: Wt::WResource::handle(Wt::WebRequest*, Wt::WebResponse*, std::shared_ptr<Wt::Http::ResponseContinuation>) (WResource.C:228)
==27112==    by 0x52A5786: Wt::WebSession::notify(Wt::WEvent const&) (WebSession.C:2416)
==27112==    by 0x52A08A4: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1699)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)
==27112==  Block was alloc'd at
==27112==    at 0x4835DEF: operator new(unsigned long) (vg_replace_malloc.c:334)
==27112==    by 0x5F7CD8D: boost::detail::make_external_thread_data() (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5F7E416: boost::detail::add_new_tss_node(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5F7E5B4: boost::detail::set_tss_data(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*, bool) (in /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.67.0)
==27112==    by 0x5297ECC: reset (tss.hpp:105)
==27112==    by 0x5297ECC: get_definition<Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::parser_context<>, boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.ipp:226)
==27112==    by 0x5297ECC: grammar_parser_parse<0, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::parser_context<>, boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.ipp:272)
==27112==    by 0x5297ECC: parse_main<boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.hpp:57)
==27112==    by 0x5297ECC: parse<boost::spirit::classic::scanner<char const*, boost::spirit::classic::scanner_policies<boost::spirit::classic::skipper_iteration_policy<> > > > (grammar.hpp:65)
==27112==    by 0x5297ECC: parse<char const*, Wt::(anonymous namespace)::ValueListParser> (skipper.ipp:133)
==27112==    by 0x5297ECC: parse<char const*, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::space_parser> (skipper.ipp:155)
==27112==    by 0x5297ECC: parse<char, Wt::(anonymous namespace)::ValueListParser, boost::spirit::classic::space_parser> (skipper.ipp:173)
==27112==    by 0x5297ECC: Wt::WebRequest::parsePreferredAcceptValue[abi:cxx11](char const*) const (WebRequest.C:255)
==27112==    by 0x5299D21: Wt::WebRequest::parseLocale() const (WebRequest.C:283)
==27112==    by 0x4F50C4C: Wt::WEnvironment::init(Wt::WebRequest const&) (WEnvironment.C:212)
==27112==    by 0x529E3EA: Wt::WebSession::init(Wt::WebRequest const&) (WebSession.C:374)
==27112==    by 0x529F8F7: Wt::WebSession::handleRequest(Wt::WebSession::Handler&) (WebSession.C:1412)
==27112==    by 0x52908DB: Wt::WebController::handleRequest(Wt::WebRequest*) (WebController.C:767)
==27112==    by 0x4B4B9E8: __invoke_impl<void, void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:73)
==27112==    by 0x4B4B9E8: __invoke<void (Wt::WebController::*&)(Wt::WebRequest*), Wt::WebController*&, http::server::HTTPRequest*&> (invoke.h:95)
==27112==    by 0x4B4B9E8: __call<void, 0, 1> (functional:400)
==27112==    by 0x4B4B9E8: operator()<> (functional:484)
==27112==    by 0x4B4B9E8: asio_handler_invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_hook.hpp:69)
==27112==    by 0x4B4B9E8: invoke<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)>, std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_invoke_helpers.hpp:37)
==27112==    by 0x4B4B9E8: complete<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> > (handler_work.hpp:82)
==27112==    by 0x4B4B9E8: boost::asio::detail::completion_handler<std::_Bind<void (Wt::WebController::*(Wt::WebController*, http::server::HTTPRequest*))(Wt::WebRequest*)> >::do_complete(void*, boost::asio::detail::scheduler_operation*, boost::system::error_code const&, unsigned long) (completion_handler.hpp:70)
==27112==    by 0x4FA71CB: complete (scheduler_operation.hpp:40)
==27112==    by 0x4FA71CB: do_run_one (scheduler.ipp:401)
==27112==    by 0x4FA71CB: run (scheduler.ipp:154)
==27112==    by 0x4FA71CB: run (io_context.ipp:62)
==27112==    by 0x4FA71CB: Wt::WIOService::run() (WIOService.C:180)


RE: WFiledropWidget file leaks - Added by Emeric Poupon about 1 year ago

No news on this crash?

RE: WFiledropWidget file leaks - Added by Emeric Poupon 3 months ago

I finally had some other issues on 4.5.0.
I created a patch to get rid of them: https://github.com/emweb/wt/pull/181

RE: WFiledropWidget file leaks - Added by Korneel Dumon 3 months ago

Hi,

thanks a lot for fixing this. I applied your patches and they will be in after another review.
I also made an issue to track this: https://redmine.emweb.be/issues/9056

    (1-8/8)