Intermittent SIGSEGV caused by std::unique_ptr.release()?

        auto command = view.handleEvents();
        if (command) {
            nextCommand_.reset(command);
        }

This one takes raw pointer from unique_ptr and assigns it to other unique_ptr, but keeps the original unique_ptr inside the map, though empty. Thus, you just end up with use-after-free, what Address Sanitizer would have precisely told you:

==25993==ERROR: AddressSanitizer: heap-use-after-free on address 0x602000000010 at pc 0x56026e8d74fe bp 0x7fff48410330 sp 0
x7fff48410328
READ of size 8 at 0x602000000010 thread T0
    #0 0x56026e8d74fd in Game::update() /home/alagner/ncu/file.cc:149
    #1 0x56026e8d73f1 in Game::run(View&) /home/alagner/ncu/file.cc:140
    #2 0x56026e8d76ee in main /home/alagner/ncu/file.cc:165
    #3 0x7f32fa53ad09 in __libc_start_main ../csu/libc-start.c:308
    #4 0x56026e8d6329 in _start (/home/alagner/ncu/a.out+0x2329)

0x602000000010 is located 0 bytes inside of 16-byte region [0x602000000010,0x602000000020)
freed by thread T0 here:
    #0 0x7f32fa9c5467 in operator delete(void*, unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:172
    #1 0x56026e8d90aa in MoveCommand::~MoveCommand() /home/alagner/ncu/file.cc:38
    #2 0x56026e8d95d0 in std::default_delete<Command>::operator()(Command*) const /usr/include/c++/10/bits/unique_ptr.h:85
    #3 0x56026e8d966f in std::__uniq_ptr_impl<Command, std::default_delete<Command> >::reset(Command*) /usr/include/c++/10/bits/unique_ptr.h:182
    #4 0x56026e8d88e0 in std::unique_ptr<Command, std::default_delete<Command> >::reset(Command*) /usr/include/c++/10/bits/unique_ptr.h:456
    #5 0x56026e8d73b4 in Game::run(View&) /home/alagner/ncu/file.cc:135
    #6 0x56026e8d76ee in main /home/alagner/ncu/file.cc:165

previously allocated by thread T0 here:
    #0 0x7f32fa9c4647 in operator new(unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:99
    #1 0x56026e8d83ba in std::_MakeUniq<MoveCommand>::__single_object std::make_unique<MoveCommand, int>(int&&) /usr/include/c++/10/bits/unique_ptr.h:962
    #2 0x56026e8d65c5 in View::View() /home/alagner/ncu/file.cc:47
    #3 0x56026e8d76db in main /home/alagner/ncu/file.cc:163
    #4 0x7f32fa53ad09 in __libc_start_main ../csu/libc-start.c:308
```