Steps to reproduce the crash.

1. Build the code

    $ mkdir build && cd build
    $ cmake ..
    $ make -j 4

2. Start the example server

    $ cd .. # out of build dir, back into source.
    $ ./run build/upload-recreate

3. In the browser window, click "Browse" and select a
   large file (e.g. > 100 MiB).  I see the crash on
   most uploads.

```
[2020-Oct-06 16:30:36.646810] 1633202 - [debug] "WQApplication: [thread] handling event"
[2020-Oct-06 16:30:36.646820] 1633202 - [debug] "WQApplication: [thread] done handling event"
[2020-Oct-06 16:30:36.646824] 1633202 - [debug] "WQApplication: [thread] signaling event done"
[2020-Oct-06 16:30:36.646832] 1633202 [/ oRm722jntsoq5tnZ] [debug] "WQApplication: notifying thread"
[2020-Oct-06 16:30:36.646845] 1633202 - [debug] "WQApplication: [thread] handling event"
[2020-Oct-06 16:30:36.646854] 1633202 - [debug] "WQApplication: [thread] done handling event"
[2020-Oct-06 16:30:36.646858] 1633202 - [debug] "WQApplication: [thread] signaling event done"
[2020-Oct-06 16:30:36.654864] 1633202 [/ oRm722jntsoq5tnZ] [debug] "WQApplication: notifying thread"
[2020-Oct-06 16:30:36.654941] 1633202 - [debug] "WQApplication: [thread] handling event"
./run: line 14: 1633202 Segmentation fault      (core dumped) "$APP" --docroot="$PWD;/resources" --http-address "$ADDR" --http-port "$PORT"
```

Stack trace:

```
(gdb) info threads
  Id   Target Id                                             Frame 
  1    Thread 0x7ffff3f7fc80 (LWP 1633820) "upload-recreate" 0x00007ffff6728412 in sigtimedwait() from /lib64/libc.so.6
  2    Thread 0x7fffe6f86700 (LWP 1633821) "upload-recreate" 0x00007ffff7a1fd45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
  3    Thread 0x7fffe6785700 (LWP 1633822) "upload-recreate" 0x00007ffff7a23610 in __lll_lock_wait () from /lib64/libpthread.so.0
  4    Thread 0x7fffe5f84700 (LWP 1633823) "upload-recreate" 0x00007ffff7a1fd45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
  5    Thread 0x7fffe5783700 (LWP 1633824) "upload-recreate" 0x00007ffff67ec9fe in epoll_wait() from /lib64/libc.so.6
* 6    Thread 0x7fffe4f82700 (LWP 1633835) "QThread"         std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Wt::WResource*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Wt::WResource*> >, 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, Wt::WResource*> > >::_M_lower_bound (this=<optimized out>, 
    __k=<error reading variable: Cannot access memory at address 0x7fffe45bf018>, 
    __y=0x7fffe000c3a8, __x=0x7fffd4005f90) at /usr/include/c++/9/bits/stl_tree.h:1945



(gdb) bt
#0  std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Wt::WResource*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Wt::WResource*> >, 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, Wt::WResource*> > >::_M_lower_bound (this=<optimized out>,
    __k=<error reading variable: Cannot access memory at address 0x7fffe45bf018>,
    __y=0x7fffe000c3a8, __x=0x7fffd4005f90) at /usr/include/c++/9/bits/stl_tree.h:1945
#1  std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Wt::WResource*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, Wt::WResource*> >, 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, Wt::WResource*> > >::find (__k=<error reading variable: Cannot access memory at address 0x7fffe45bf018>,
    this=0x7fffe000c3a0) at /usr/include/c++/9/bits/stl_tree.h:2570
#2  std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Wt::WResource*, 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, Wt::WResource*> > >::find (
    __x=<error reading variable: Cannot access memory at address 0x7fffe45bf018>,
    this=0x7fffe000c3a0) at /usr/include/c++/9/bits/stl_map.h:1194
#3  Wt::WApplication::decodeExposedResource (this=this@entry=0x7fffe000be30,
    resourceKey=<error reading variable: Cannot access memory at address 0x7fffe45bf018>)
    at ../src/Wt/WApplication.C:886
#4  0x00007ffff7516a0c in Wt::WebController::updateResourceProgress (this=<optimized out>,
    request=0x7fffe00070a0, current=90946977, total=342288591)  
    at ../src/web/WebController.C:474
#5  0x00007ffff7528dfc in boost::function0<void>::operator() (this=<optimized out>)
    at /usr/include/boost/function/function_template.hpp:677
#6  Wt::WebSession::notify (this=0x7fffe00044a0, event=...) at ../src/web/WebSession.C:2240
#7  0x0000000000489e23 in Wt::WQApplication::realNotify(Wt::WEvent const&) ()
#8  0x000000000048661f in Wt::DispatchThread::doEvent() ()
#9  0x0000000000485f20 in Wt::DispatchObject::onEvent() ()
#10 0x000000000046c945 in Wt::DispatchObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#11 0x00007ffff7d007fa in QObject::event(QEvent*) () from /lib64/libQt5Core.so.5
#12 0x00007ffff7cd53b5 in doNotify(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#13 0x00007ffff7cd5448 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
```

