MusicPlayerDaemon / MPD

Music Player Daemon
https://www.musicpd.org/
GNU General Public License v2.0
2.2k stars 351 forks source link

Segmentation fault through PipeWireOutput::SetVolume #1534

Closed mweinelt closed 2 years ago

mweinelt commented 2 years ago

Bug report

Describe the bug

Every once in a while we seem to see a segmentation fault that seems related to volume output change in the pipewire output.

I have a stack trace (see below), but no debug symbols. Can recompile with debug symbols if necessary.

Expected Behavior

Setting the volume should not crash mpd.

Actual Behavior

That does not seem to always hold true.

Version

# /nix/store/xqdm64ynd3accnd8z91ip68gs84805m9-mpd-0.23.6/bin/mpd  --version
Music Player Daemon 0.23.6 (0.23.6)
Copyright 2003-2007 Warren Dukes <warren.dukes@gmail.com>
Copyright 2008-2021 Max Kellermann <max.kellermann@gmail.com>
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins:
 simple proxy

Storage plugins:
 local smbclient udisks nfs curl

Neighbor plugins:
 smbclient udisks

Decoders plugins:
 [mad] mp3 mp2
 [mpg123] mp3
 [vorbis] ogg oga
 [oggflac] ogg oga
 [flac] flac
 [opus] opus ogg oga
 [audiofile] wav au aiff aif
 [dsdiff] dff
 [dsf] dsf
 [hybrid_dsd] m4a
 [faad] aac
 [mikmod] amf dsm far gdm imf it med mod mtm s3m stm stx ult uni xm
 [fluidsynth] mid
 [ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 adx afc aif aifc aiff al alaw amr anim apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg opus psp pva qcp qt r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tak tgi tgq tgv thp ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve rtp:// rtsp:// rtsps://
 [gme] ay gbs gym hes kss nsf nsfe rsn sap spc vgm vgz
 [pcm]

Filters:
 libsamplerate

Tag plugins:
 id3tag

Output plugins:
 shout null fifo pipe alsa pipewire pulse jack httpd snapcast recorder

Encoder plugins:
 null vorbis opus lame wave flac

Archive plugins:
 [bz2] bz2
 [zzip] zip

Input plugins:
 file io_uring archive alsa qobuz curl ffmpeg smbclient nfs mms

Playlist plugins:
 extm3u m3u pls xspf asx rss soundcloud flac cue embcue

Protocols:
 file:// alsa:// ftp:// ftps:// gopher:// hls+http:// hls+https:// http:// https:// mms:// mmsh:// mmst:// mmsu:// nfs:// qobuz:// rtmp:// rtmps:// rtmpt:// rtmpts:// rtp:// rtsp:// rtsps:// scp:// sftp:// smb:// srtp://

Other features:
 avahi dbus udisks epoll icu inotify systemd tcp un

Log

May 16 06:03:39 lounge systemd[1]: Starting Music Player Daemon...
May 16 06:03:55 lounge systemd[1]: Started Music Player Daemon.
May 17 20:32:50 lounge systemd[1]: mpd.service: Main process exited, code=dumped, status=11/SEGV
May 17 20:32:50 lounge systemd[1]: mpd.service: Failed with result 'core-dump'.
May 17 20:32:50 lounge systemd[1]: mpd.service: Consumed 7.574s CPU time, received 5.9M IP traffic, sent 8.9M IP traffic.
#0  0x00007f66beacbf30 in pthread_mutex_lock@@GLIBC_2.2.5 () from /nix/store/ybkkrhdwdj227kr20vk8qnzqnmj7a06x-glibc-2.34-115/lib/libc.so.6
No symbol table info available.
#1  0x00007f66bf9f578d in pw_thread_loop_lock () from /nix/store/7b8wxxcmkjdyrn9hd99q912gbpm2rz3d-pipewire-0.3.51-lib/lib/libpipewire-0.3.so.0
No symbol table info available.
#2  0x00000000004ba9bd in PipeWireOutput::SetVolume(float) ()
No symbol table info available.
#3  0x0000000000514e28 in PipeWireMixer::SetVolume(unsigned int) ()
No symbol table info available.
#4  0x00000000004c48e2 in mixer_set_volume(Mixer*, unsigned int) ()
No symbol table info available.
#5  0x00000000004c4b40 in MultipleOutputs::SetVolume(unsigned int) ()
No symbol table info available.
#6  0x000000000043fc96 in handle_setvol(Client&, Request, Response&) ()
No symbol table info available.
#7  0x0000000000439f8c in command_process(Client&, unsigned int, char*) ()
No symbol table info available.
#8  0x00000000004477ad in Client::ProcessLine(char*) ()
No symbol table info available.
#9  0x0000000000447b9e in Client::OnSocketInput(void*, unsigned long) ()
No symbol table info available.
#10 0x000000000047555b in BufferedSocket::ResumeInput() ()
No symbol table info available.
#11 0x00000000004756d8 in BufferedSocket::OnSocketReady(unsigned int) ()
No symbol table info available.
#12 0x0000000000478006 in EventLoop::Run() ()
No symbol table info available.
#13 0x0000000000438c75 in MainConfigured(CommandLineOptions const&, ConfigData const&) ()
No symbol table info available.
#14 0x0000000000439162 in MainOrThrow(int, char**) ()
No symbol table info available.
#15 0x000000000043737a in main ()
No symbol table info available.
Fabus1184 commented 2 years ago

I have the same issue on my system (EndeavourOS) altough this happens very inconsistently.

MaxKellermann commented 2 years ago

How to reproduce?

mweinelt commented 2 years ago

Not yet fully clear. The user that triggered that for us said he changed the volume around the time when the track changed.

I've rebuilt with debug symbols a few weeks back but we haven't seen another crash since 2022/05/31.

KaiJan57 commented 2 years ago

Consistent crashes with PipeWire 0.3.53 on my side too; maybe this is related: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2488?

mweinelt commented 2 years ago

Use the pipewire output. Queue music. Don't start the music. Change the volume. CRASH.

#0  0x00007f0451bca070 in pthread_mutex_lock@@GLIBC_2.2.5 () from /nix/store/d2bpliayddadf6lx6l1i04w265gqw8n6-glibc-2.34-210/lib/libc.so.6
No symbol table info available.
#1  0x00007f0452af6a3d in pw_thread_loop_lock () from /nix/store/cjf8rjhqv1phpqg1403qbwkhv5vwnbfs-pipewire-0.3.52-lib/lib/libpipewire-0.3.so.0
No symbol table info available.
#2  0x00000000004ba67d in PipeWire::ThreadLoopLock::ThreadLoopLock (_loop=0x0, this=0x7fff9ea1d848) at ../src/lib/pipewire/ThreadLoop.hxx:45
No locals.
#3  PipeWireOutput::SetVolume (this=0x1e1e360, _volume=0.979999959) at ../src/output/plugins/PipeWireOutputPlugin.cxx:314
        lock = {loop = 0x0}
        newvol = <optimized out>
#4  0x00000000004badb9 in pipewire_output_set_volume (output=..., volume=<optimized out>) at ../src/output/plugins/PipeWireOutputPlugin.cxx:926
No locals.
#5  0x0000000000523eed in PipeWireMixer::SetVolume (this=0x1e18660, new_volume=98) at ../src/mixer/plugins/PipeWireMixerPlugin.cxx:77
No locals.
#6  0x00000000004c56b9 in mixer_set_volume (mixer=0x1e18660, volume=volume@entry=98) at ../src/mixer/MixerControl.cxx:149
        __PRETTY_FUNCTION__ = "void mixer_set_volume(Mixer*, unsigned int)"
        protect = {_M_device = @0x1e18678}
#7  0x00000000004c59eb in output_mixer_set_volume (ao=..., volume=volume@entry=98) at ../src/mixer/MixerAll.cxx:87
        __PRETTY_FUNCTION__ = "bool output_mixer_set_volume(AudioOutputControl&, unsigned int)"
        mixer = <optimized out>
#8  0x00000000004c5ae4 in MultipleOutputs::SetVolume (this=this@entry=0x1dd5dd0, volume=volume@entry=98) at ../src/mixer/MixerAll.cxx:104
        ao = std::unique_ptr<AudioOutputControl> = {get() = 0x1e1e8b0}
        __for_range = std::vector of length 2, capacity 2 = {std::unique_ptr<AudioOutputControl> = {get() = 0x1e1e8b0}, std::unique_ptr<AudioOutputControl> = {get() = 0x1e1eb40}}
        __for_begin = <optimized out>
        __for_end = <optimized out>
        __PRETTY_FUNCTION__ = "bool MultipleOutputs::SetVolume(unsigned int)"
        success = false
#9  0x0000000000452ea1 in hardware_volume_change (outputs=..., volume=volume@entry=98) at ../src/mixer/Volume.cxx:80
No locals.
#10 0x0000000000452f65 in volume_level_change (outputs=..., volume=98) at ../src/mixer/Volume.cxx:92
        __PRETTY_FUNCTION__ = "bool volume_level_change(MultipleOutputs&, unsigned int)"
#11 0x0000000000427ce8 in handle_volume (client=..., args=..., r=...) at ../src/command/OtherCommands.cxx:368
        relative = <optimized out>
        outputs = @0x1dd5dd0: {<PlayerOutputs> = {_vptr.PlayerOutputs = 0x59f538 <vtable for MultipleOutputs+16>}, client = @0x1dd5e18, mixer_listener = @0x1dd4920, 
          outputs = std::vector of length 2, capacity 2 = {std::unique_ptr<AudioOutputControl> = {get() = 0x1e1e8b0}, std::unique_ptr<AudioOutputControl> = {get() = 0x1e1eb40}}, 
          input_audio_format = {sample_rate = 0, format = SampleFormat::UNDEFINED, channels = 0 '\000'}, pipe = std::unique_ptr<MusicPipe> = {get() = 0x0}, 
          elapsed_time = {<std::chrono::duration<int, std::ratio<1, 1000> >> = {__r = -1}, <No data fields>}}
        old_volume = <optimized out>
        new_volume = <optimized out>
#12 0x00000000004214a8 in command_process (client=..., num=num@entry=0, line=<optimized out>) at ../src/command/AllCommands.cxx:432
        cmd = <optimized out>
        r = {client = @0x1e45360, list_index = 0, command = 0x556693 "volume"}
        tokenizer = {input = 0x1e45383 ""}
        cmd_name = 0x1e45378 "volume"
        argv = {0x1e4537f "-2", 0x7fff9ea1da70 "\025", 0x13 <error: Cannot access memory at address 0x13>, 
          0x7f045538b5f6 <void fmt::v7::detail::vformat_to<char>(fmt::v7::detail::buffer<char>&, fmt::v7::basic_string_view<char>, fmt::v7::basic_format_args<fmt::v7::basic_format_context<fmt::v7::detail::buffer_appender<fmt::v7::type_identity<char>::type>, fmt::v7::type_identity<char>::type> >, fmt::v7::detail::locale_ref)+1142> "H\213\204$\250", 0x0, 
--Type <RET> for more, q to quit, c to continue without paging--
          "", 0x53aa4e "", 0x7fff9ea1daa0 "0\364\336\001", 0x5 <error: Cannot access memory at address 0x5>, 
          0x7f045538b5f6 <void fmt::v7::detail::vformat_to<char>(fmt::v7::detail::buffer<char>&, fmt::v7::basic_string_view<char>, fmt::v7::basic_format_args<fmt::v7::basic_format_context<fmt::v7::detail::buffer_appender<fmt::v7::type_identity<char>::type>, fmt::v7::type_identity<char>::type> >, fmt::v7::detail::locale_ref)+1142> "H\213\204$\250", 0x0, 0x1e3cba8 "\320}\355L\004\177", 0x7fff9ea1db68 "\003", 0x15warning: (Internal error: pc 0x15 in read in psymtab, but not in symtab.)

 <error: Cannot access memory at address 0x15>, 0x7f044ce6f280 <cipher_compare> "\213V\030\061\300\071W\030t\005\031\300\203\310\001\303\351", <incomplete sequence \353\271>, 0x1e3cba8 "\320}\355L\004\177", 0x15warning: (Internal error: pc 0x15 in read in psymtab, but not in symtab.)

 <error: Cannot access memory at address 0x15>, 0x52e700 "Loading state file {}", 0x15warning: (Internal error: pc 0x15 in read in psymtab, but not in symtab.)

 <error: Cannot access memory at address 0x15>, 0x7f0451c4a842 <send+114> "H\213D$\bH\203\304\020[]A\\A]A^\303\017\037@", 0x7fff9ea1db00 "\244\315\024R\004\177", 0xewarning: (Internal error: pc 0xe in read in psymtab, but not in symtab.)

 <error: Cannot access memory at address 0xe>, 0x1def430 "\n", 
          0x2 <error: Cannot access memory at address 0x2>, 0x0, 0x0, 0x7f0452155520 <idle_names> "п\024R\004\177", 0x7f045213e628 <mpd_async_io+424> "H\205\300\017\211\267", 0x7fff9ea1db80 "\001", 0x1def430 "\n", 0x7fff9ea1db10 "\036", 0x0, 0x0, 0x7f0452155520 <idle_names> "п\024R\004\177", 0x7f045214cda4 " ", 
          0x7f0452149a2a <mpd_sync_flush+74> "\250\002t\022H\211\356H\211\337\350W\374\377\377\205\300u#E1\344H\213D$\030dH+\004%(", 0x1ewarning: (Internal error: pc 0x1e in read in psymtab, but not in symtab.)

 <error: Cannot access memory at address 0x1e>, 0x0, 0x7fff9ea1dba0 "", 
    0x46b9ff <AppendTo(DynamicFifoBuffer<std::byte>&, void const*, size_t)+207> "H\213C\bH\213S\020H9\320\017\207\377", 0xewarning: (Internal error: pc 0xe in read in psymtab, but not in symtab.)

 <error: Cannot access memory at address 0xe>, 0x0, 
          0x1e47590 "OK\ne: hexa/Two Steps From Hell - Dragon (2019) [WEB FLAC]/01 - Unbreakable.flac\nLast-Modified: 2019-09-29T12:26:32Z\nFormat: 44100:16:2\nArtist: Thomas Bergersen\nAlbum: Dragon\nAlbumArtist: Two Steps Fro"..., 0x4000 <error: Cannot access memory at address 0x4000>, 0x0, 
          0x7e4b2467a3e2af00 <error: Cannot access memory at address 0x7e4b2467a3e2af00>, 0x1dd3590 "\320\302\330\001", 0x3 <error: Cannot access memory at address 0x3>, 0x1e473d8 "", 0x52adab "OK\n", 0x1 <error: Cannot access memory at address 0x1>, 
          0x7e4b2467a3e2af00 <error: Cannot access memory at address 0x7e4b2467a3e2af00>, 0x1e45360 "H8Z", 0x52adef "[{}] process command \"{}\"", 0x0, 0x59e220 <client_domain> "W\234T", 0x7fff9ea1dbc0 "\001", 
          0x4386e8 <LogFmt<char [26], unsigned int const&, char*&>(LogLevel, Domain const&, char const (&) [26], unsigned int const&, char*&)+110> "H\213D$(dH+\004%(", 0x1 <error: Cannot access memory at address 0x1>, 0x59e220 <client_domain> "W\234T", 0x1e45378 "volume", 
          0x1 <error: Cannot access memory at address 0x1>, 0x1e3a2d0 "hexa/Two Steps From Hell - Dragon (2019) [WEB FLAC]/04 - Dragon.flac", 0x7e4b2467a3e2af00 <error: Cannot access memory at address 0x7e4b2467a3e2af00>}
        args = <optimized out>
#13 0x0000000000438bad in Client::ProcessLine (this=this@entry=0x1e45360, line=<optimized out>, line@entry=0x1e45378 "volume") at ../src/client/Process.cxx:137
        id = 1
        ret = <optimized out>
        __PRETTY_FUNCTION__ = "CommandResult Client::ProcessLine(char*)"
#14 0x0000000000438da0 in Client::OnSocketInput (this=0x1e45360, data=0x1e45378, length=<optimized out>) at ../src/client/Read.cxx:49
        p = 0x1e45378 "volume"
        newline = 0x1e45383 ""
        end = <optimized out>
        result = <optimized out>
#15 0x000000000046d65c in BufferedSocket::ResumeInput (this=this@entry=0x1e45360) at ../src/event/BufferedSocket.cxx:76
        buffer = <optimized out>
        result = <optimized out>
        __PRETTY_FUNCTION__ = "bool BufferedSocket::ResumeInput()"
#16 0x000000000046d800 in BufferedSocket::OnSocketReady (this=this@entry=0x1e45360, flags=flags@entry=1) at ../src/event/BufferedSocket.cxx:113
        __PRETTY_FUNCTION__ = "virtual void BufferedSocket::OnSocketReady(unsigned int)"
#17 0x000000000046ddf3 in FullyBufferedSocket::OnSocketReady (this=0x1e45360, flags=1) at ../src/event/FullyBufferedSocket.cxx:106
        __PRETTY_FUNCTION__ = "virtual void FullyBufferedSocket::OnSocketReady(unsigned int)"
#18 0x0000000000437a7f in BindMethodDetail::WrapperGenerator<void (BufferedSocket::*)(unsigned int) noexcept, &BufferedSocket::OnSocketReady>::Invoke(void*, unsigned int) (_instance=<optimized out>, args#0=<optimized out>) at ../src/util/BindMethod.hxx:130
        t = <optimized out>
#19 0x000000000046d0b7 in BoundMethod<void (unsigned int) noexcept>::operator()(unsigned int) const (args#0=<optimized out>, this=<optimized out>) at ../src/util/BindMethod.hxx:78
No locals.
#20 SocketEvent::Dispatch (this=<optimized out>) at ../src/event/SocketEvent.cxx:121
        flags = <optimized out>
#21 0x00000000004707cf in EventLoop::Run (this=this@entry=0x7fff9ea1df38) at ../src/event/Loop.cxx:362
        socket_event = <optimized out>
        timeout = {__r = 0}
        __PRETTY_FUNCTION__ = "void EventLoop::Run()"
        at_scope_exit_284 = {<> = {__this = 0x7fff9ea1df38}, enabled = true}
        at_scope_exit_295 = {<> = {__this = 0x7fff9ea1df38}, enabled = true}
#22 0x000000000041fc94 in MainConfigured (options=..., raw_config=...) at ../src/Main.cxx:576
        icu_init = <optimized out>
        net_init = <optimized out>
        dbus_init = <optimized out>
        config = {replay_gain = {static DEFAULT_LIMIT = true, preamp = 1, missing_preamp = 1, limit = true}}
        instance = {<EventLoopHolder> = {event_loop = {wake_fd = {fd = {fd = {<FileDescriptor> = {fd = 3}, <No data fields>}}}, wake_event = {<IntrusiveListHook> = {siblings = {next = 0x1dd34c0, prev = 0x5aa3e8 <monitor+8>}}, <EpollEvents> = {static READ = 1, static WRITE = 4, static ERROR = 8, static HANGUP = 16}, 
                loop = @0x7fff9ea1df38, callback = {instance_ = 0x7fff9ea1df38, function = 0x470952 <BindMethodDetail::WrapperGenerator<void (EventLoop::*)(unsigned int) noexcept, &EventLoop::OnSocketReady>::Invoke(void*, unsigned int)>}, fd = {<FileDescriptor> = {fd = 3}, <No data fields>}, scheduled_flags = 25, 
                ready_flags = 0, static IMPLICIT_FLAGS = 24}, coarse_timers = {static RESOLUTION = {__r = 1000000000}, static SPAN = <same as static member of an already seen type>, static N_BUCKETS = 120, buckets = {_M_elems = {{head = {next = 0x7fff9ea1df78, prev = 0x7fff9ea1df78}}, {head = {next = 0x7fff9ea1df88, 
                        prev = 0x7fff9ea1df88}}, {head = {next = 0x7fff9ea1df98, prev = 0x7fff9ea1df98}}, {head = {next = 0x7fff9ea1dfa8, prev = 0x7fff9ea1dfa8}}, {head = {next = 0x7fff9ea1dfb8, prev = 0x7fff9ea1dfb8}}, {head = {next = 0x7fff9ea1dfc8, prev = 0x7fff9ea1dfc8}}, {head = {next = 0x7fff9ea1dfd8, 
                        prev = 0x7fff9ea1dfd8}}, {head = {next = 0x7fff9ea1dfe8, prev = 0x7fff9ea1dfe8}}, {head = {next = 0x7fff9ea1dff8, prev = 0x7fff9ea1dff8}}, {head = {next = 0x7fff9ea1e008, prev = 0x7fff9ea1e008}}, {head = {next = 0x7fff9ea1e018, prev = 0x7fff9ea1e018}}, {head = {next = 0x7fff9ea1e028, 
                        prev = 0x7fff9ea1e028}}, {head = {next = 0x7fff9ea1e038, prev = 0x7fff9ea1e038}}, {head = {next = 0x7fff9ea1e048, prev = 0x7fff9ea1e048}}, {head = {next = 0x7fff9ea1e058, prev = 0x7fff9ea1e058}}, {head = {next = 0x7fff9ea1e068, prev = 0x7fff9ea1e068}}, {head = {next = 0x7fff9ea1e078, 
                        prev = 0x7fff9ea1e078}}, {head = {next = 0x7fff9ea1e088, prev = 0x7fff9ea1e088}}, {head = {next = 0x7fff9ea1e098, prev = 0x7fff9ea1e098}}, {head = {next = 0x7fff9ea1e0a8, prev = 0x7fff9ea1e0a8}}, {head = {next = 0x7fff9ea1e0b8, prev = 0x7fff9ea1e0b8}}, {head = {next = 0x7fff9ea1e0c8, 
                        prev = 0x7fff9ea1e0c8}}, {head = {next = 0x7fff9ea1e0d8, prev = 0x7fff9ea1e0d8}}, {head = {next = 0x7fff9ea1e0e8, prev = 0x7fff9ea1e0e8}}, {head = {next = 0x7fff9ea1e0f8, prev = 0x7fff9ea1e0f8}}, {head = {next = 0x7fff9ea1e108, prev = 0x7fff9ea1e108}}, {head = {next = 0x7fff9ea1e118, 
                        prev = 0x7fff9ea1e118}}, {head = {next = 0x7fff9ea1e128, prev = 0x7fff9ea1e128}}, {head = {next = 0x7fff9ea1e138, prev = 0x7fff9ea1e138}}, {head = {next = 0x7fff9ea1e148, prev = 0x7fff9ea1e148}}, {head = {next = 0x7fff9ea1e158, prev = 0x7fff9ea1e158}}, {head = {next = 0x7fff9ea1e168, 
                        prev = 0x7fff9ea1e168}}, {head = {next = 0x7fff9ea1e178, prev = 0x7fff9ea1e178}}, {head = {next = 0x7fff9ea1e188, prev = 0x7fff9ea1e188}}, {head = {next = 0x7fff9ea1e198, prev = 0x7fff9ea1e198}}, {head = {next = 0x7fff9ea1e1a8, prev = 0x7fff9ea1e1a8}}, {head = {next = 0x7fff9ea1e1b8, 
                        prev = 0x7fff9ea1e1b8}}, {head = {next = 0x7fff9ea1e1c8, prev = 0x7fff9ea1e1c8}}, {head = {next = 0x7fff9ea1e1d8, prev = 0x7fff9ea1e1d8}}, {head = {next = 0x7fff9ea1e1e8, prev = 0x7fff9ea1e1e8}}, {head = {next = 0x7fff9ea1e1f8, prev = 0x7fff9ea1e1f8}}, {head = {next = 0x7fff9ea1e208, 
                        prev = 0x7fff9ea1e208}}, {head = {next = 0x7fff9ea1e218, prev = 0x7fff9ea1e218}}, {head = {next = 0x7fff9ea1e228, prev = 0x7fff9ea1e228}}, {head = {next = 0x7fff9ea1e238, prev = 0x7fff9ea1e238}}, {head = {next = 0x7fff9ea1e248, prev = 0x7fff9ea1e248}}, {head = {next = 0x7fff9ea1e258, 
                        prev = 0x7fff9ea1e258}}, {head = {next = 0x7fff9ea1e268, prev = 0x7fff9ea1e268}}, {head = {next = 0x7fff9ea1e278, prev = 0x7fff9ea1e278}}, {head = {next = 0x7fff9ea1e288, prev = 0x7fff9ea1e288}}, {head = {next = 0x7fff9ea1e298, prev = 0x7fff9ea1e298}}, {head = {next = 0x7fff9ea1e2a8, 
                        prev = 0x7fff9ea1e2a8}}, {head = {next = 0x7fff9ea1e2b8, prev = 0x7fff9ea1e2b8}}, {head = {next = 0x7fff9ea1e2c8, prev = 0x7fff9ea1e2c8}}, {head = {next = 0x7fff9ea1e2d8, prev = 0x7fff9ea1e2d8}}, {head = {next = 0x7fff9ea1e2e8, prev = 0x7fff9ea1e2e8}}, {head = {next = 0x7fff9ea1e2f8, 
                        prev = 0x7fff9ea1e2f8}}, {head = {next = 0x7fff9ea1e308, prev = 0x7fff9ea1e308}}, {head = {next = 0x7fff9ea1e318, prev = 0x7fff9ea1e318}}, {head = {next = 0x7fff9ea1e328, prev = 0x7fff9ea1e328}}, {head = {next = 0x7fff9ea1e338, prev = 0x7fff9ea1e338}}, {head = {next = 0x1e47418, 
                        prev = 0x1e47418}}, {head = {next = 0x7fff9ea1e358, prev = 0x7fff9ea1e358}}, {head = {next = 0x7fff9ea1e368, prev = 0x7fff9ea1e368}}, {head = {next = 0x7fff9ea1e378, prev = 0x7fff9ea1e378}}, {head = {next = 0x7fff9ea1e388, prev = 0x7fff9ea1e388}}, {head = {next = 0x7fff9ea1e398, 
                        prev = 0x7fff9ea1e398}}, {head = {next = 0x7fff9ea1e3a8, prev = 0x7fff9ea1e3a8}}, {head = {next = 0x7fff9ea1e3b8, prev = 0x7fff9ea1e3b8}}, {head = {next = 0x7fff9ea1e3c8, prev = 0x7fff9ea1e3c8}}, {head = {next = 0x7fff9ea1e3d8, prev = 0x7fff9ea1e3d8}}, {head = {next = 0x7fff9ea1e3e8, 
                        prev = 0x7fff9ea1e3e8}}, {head = {next = 0x7fff9ea1e3f8, prev = 0x7fff9ea1e3f8}}, {head = {next = 0x7fff9ea1e408, prev = 0x7fff9ea1e408}}, {head = {next = 0x7fff9ea1e418, prev = 0x7fff9ea1e418}}, {head = {next = 0x7fff9ea1e428, prev = 0x7fff9ea1e428}}, {head = {next = 0x7fff9ea1e438, 
                        prev = 0x7fff9ea1e438}}, {head = {next = 0x7fff9ea1e448, prev = 0x7fff9ea1e448}}, {head = {next = 0x7fff9ea1e458, prev = 0x7fff9ea1e458}}, {head = {next = 0x7fff9ea1e468, prev = 0x7fff9ea1e468}}, {head = {next = 0x7fff9ea1e478, prev = 0x7fff9ea1e478}}, {head = {next = 0x7fff9ea1e488, 
                        prev = 0x7fff9ea1e488}}, {head = {next = 0x7fff9ea1e498, prev = 0x7fff9ea1e498}}, {head = {next = 0x7fff9ea1e4a8, prev = 0x7fff9ea1e4a8}}, {head = {next = 0x7fff9ea1e4b8, prev = 0x7fff9ea1e4b8}}, {head = {next = 0x7fff9ea1e4c8, prev = 0x7fff9ea1e4c8}}, {head = {next = 0x7fff9ea1e4d8, 
                        prev = 0x7fff9ea1e4d8}}, {head = {next = 0x7fff9ea1e4e8, prev = 0x7fff9ea1e4e8}}, {head = {next = 0x7fff9ea1e4f8, prev = 0x7fff9ea1e4f8}}, {head = {next = 0x7fff9ea1e508, prev = 0x7fff9ea1e508}}, {head = {next = 0x7fff9ea1e518, prev = 0x7fff9ea1e518}}, {head = {next = 0x7fff9ea1e528, 
                        prev = 0x7fff9ea1e528}}, {head = {next = 0x7fff9ea1e538, prev = 0x7fff9ea1e538}}, {head = {next = 0x7fff9ea1e548, prev = 0x7fff9ea1e548}}, {head = {next = 0x7fff9ea1e558, prev = 0x7fff9ea1e558}}, {head = {next = 0x7fff9ea1e568, prev = 0x7fff9ea1e568}}, {head = {next = 0x7fff9ea1e578, 
                        prev = 0x7fff9ea1e578}}, {head = {next = 0x7fff9ea1e588, prev = 0x7fff9ea1e588}}, {head = {next = 0x7fff9ea1e598, prev = 0x7fff9ea1e598}}, {head = {next = 0x7fff9ea1e5a8, prev = 0x7fff9ea1e5a8}}, {head = {next = 0x7fff9ea1e5b8, prev = 0x7fff9ea1e5b8}}, {head = {next = 0x7fff9ea1e5c8, 
                        prev = 0x7fff9ea1e5c8}}, {head = {next = 0x7fff9ea1e5d8, prev = 0x7fff9ea1e5d8}}, {head = {next = 0x7fff9ea1e5e8, prev = 0x7fff9ea1e5e8}}, {head = {next = 0x7fff9ea1e5f8, prev = 0x7fff9ea1e5f8}}, {head = {next = 0x7fff9ea1e608, prev = 0x7fff9ea1e608}}, {head = {next = 0x7fff9ea1e618, 
                        prev = 0x7fff9ea1e618}}, {head = {next = 0x7fff9ea1e628, prev = 0x7fff9ea1e628}}, {head = {next = 0x7fff9ea1e638, prev = 0x7fff9ea1e638}}, {head = {next = 0x7fff9ea1e648, prev = 0x7fff9ea1e648}}, {head = {next = 0x7fff9ea1e658, prev = 0x7fff9ea1e658}}, {head = {next = 0x7fff9ea1e668, 
                        prev = 0x7fff9ea1e668}}, {head = {next = 0x7fff9ea1e678, prev = 0x7fff9ea1e678}}, {head = {next = 0x7fff9ea1e688, prev = 0x7fff9ea1e688}}, {head = {next = 0x7fff9ea1e698, prev = 0x7fff9ea1e698}}, {head = {next = 0x7fff9ea1e6a8, prev = 0x7fff9ea1e6a8}}, {head = {next = 0x7fff9ea1e6b8, 
                        prev = 0x7fff9ea1e6b8}}, {head = {next = 0x7fff9ea1e6c8, prev = 0x7fff9ea1e6c8}}, {head = {next = 0x7fff9ea1e6d8, prev = 0x7fff9ea1e6d8}}, {head = {next = 0x7fff9ea1e6e8, prev = 0x7fff9ea1e6e8}}}}, ready = {head = {next = 0x7fff9ea1e6f8, prev = 0x7fff9ea1e6f8}}, last_time = {__d = {
                    __r = 149641000000000}}, empty = false}, timers = {
                timers = {<boost::intrusive::multiset_impl<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, unsigned long, false, void>> = {<boost::intrusive::bstree_impl<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, unsigned long, false, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, false, unsigned long, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase_hack<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, false, unsigned long, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase2<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::detail::ebo_functor_holder<boost::intrusive::tree_value_compare<FineTimerEvent*, TimerList::Compare, boost::move_detail::identity<FineTimerEvent>, bool, true>, void, false>> = {<boost::intrusive::tree_value_compare<FineTimerEvent*, TimerList::Compare, boost::move_detail::identity<FineTimerEvent>, bool, true>> = {<boost::intrusive::detail::ebo_functor_holder<TimerList::Compare, void, false>> = {<TimerList::Compare> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <boost::intrusive::bstbase3<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, (boost::intrusive::algo_types)5, void>> = {
                              holder = {<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>> = {<boost::intrusive::bhtraits_base<FineTimerEvent, boost::intrusive::rbtree_node<void*>*, boost::intrusive::dft_tag, 3>> = {<No data fields>}, static link_mode = boost::intrusive::auto_unlink}, root = {<boost::intrusive::rbtree_node<void*>> = {parent_ = 0x1e3bdd0, left_ = 0x1e3bdd0, right_ = 0x1e3bdd0, 
                                    color_ = boost::intrusive::rbtree_node<void*>::red_t}, <No data fields>}}}, <No data fields>}, <No data fields>}, <No data fields>}, static constant_time_size = false}, <No data fields>}, <No data fields>}}, defer = {head = {next = 0x7fff9ea1e738, prev = 0x7fff9ea1e738}}, idle = {
                head = {next = 0x7fff9ea1e748, prev = 0x7fff9ea1e748}}, mutex = {<std::__mutex_base> = {_M_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, 
                    __align = 0}}, <No data fields>}, inject = {<boost::intrusive::list_impl<boost::intrusive::bhtraits<InjectEvent, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)1, boost::intrusive::dft_tag, 1>, unsigned long, false, void>> = {static constant_time_size = false, 
                  data_ = {<boost::intrusive::bhtraits<InjectEvent, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)1, boost::intrusive::dft_tag, 1>> = {<boost::intrusive::bhtraits_base<InjectEvent, boost::intrusive::list_node<void*>*, boost::intrusive::dft_tag, 1>> = {<No data fields>}, 
--Type <RET> for more, q to quit, c to continue without paging-- 
                      static link_mode = boost::intrusive::safe_link}, root_plus_size_ = {<boost::intrusive::detail::size_holder<false, unsigned long, void>> = {<No data fields>}, m_header = {<boost::intrusive::list_node<void*>> = {next_ = 0x7fff9ea1f9c8, 
                          prev_ = 0x7fff9ea1f9c8}, <No data fields>}}}}, <No data fields>}, sockets = {head = {next = 0x5aa3e8 <monitor+8>, prev = 0x1e47378}}, ready_sockets = {head = {next = 0x7fff9ea1e7a0, prev = 0x7fff9ea1e7a0}}, uring = std::unique_ptr<Uring::Manager> = {get() = 0x0}, thread = {
                id = 139656408451904}, alive = true, quit = {_M_base = {static _S_alignment = 1, _M_i = false}, static is_always_lock_free = true}, again = true, busy = true, uring_initialized = false, poll_backend = {epoll = {fd = {<FileDescriptor> = {fd = 4}, <No data fields>}}}, steady_clock_cache = {value = {
                  __d = {__r = 149641825365107}}}}}, <DatabaseListener> = {_vptr.DatabaseListener = 0x59e248 <vtable for Instance+16>}, <NeighborListener> = {_vptr.NeighborListener = 0x59e280 <vtable for Instance+72>}, <RemoteTagCacheHandler> = {_vptr.RemoteTagCacheHandler = 0x59e2a0 <vtable for Instance+104>}, 
          io_thread = {event_loop = {wake_fd = {fd = {fd = {<FileDescriptor> = {fd = 5}, <No data fields>}}}, wake_event = {<IntrusiveListHook> = {siblings = {next = 0x7f0444003b80, prev = 0x1e1edd0}}, <EpollEvents> = {static READ = 1, static WRITE = 4, static ERROR = 8, static HANGUP = 16}, loop = @0x7fff9ea1e7e8, 
                callback = {instance_ = 0x7fff9ea1e7e8, function = 0x470952 <BindMethodDetail::WrapperGenerator<void (EventLoop::*)(unsigned int) noexcept, &EventLoop::OnSocketReady>::Invoke(void*, unsigned int)>}, fd = {<FileDescriptor> = {fd = 5}, <No data fields>}, scheduled_flags = 25, ready_flags = 0, 
                static IMPLICIT_FLAGS = 24}, coarse_timers = {static RESOLUTION = {__r = 1000000000}, static SPAN = <same as static member of an already seen type>, static N_BUCKETS = 120, buckets = {_M_elems = {{head = {next = 0x7fff9ea1e828, prev = 0x7fff9ea1e828}}, {head = {next = 0x7fff9ea1e838, 
                        prev = 0x7fff9ea1e838}}, {head = {next = 0x7fff9ea1e848, prev = 0x7fff9ea1e848}}, {head = {next = 0x7fff9ea1e858, prev = 0x7fff9ea1e858}}, {head = {next = 0x7fff9ea1e868, prev = 0x7fff9ea1e868}}, {head = {next = 0x7fff9ea1e878, prev = 0x7fff9ea1e878}}, {head = {next = 0x7fff9ea1e888, 
                        prev = 0x7fff9ea1e888}}, {head = {next = 0x7fff9ea1e898, prev = 0x7fff9ea1e898}}, {head = {next = 0x7fff9ea1e8a8, prev = 0x7fff9ea1e8a8}}, {head = {next = 0x7fff9ea1e8b8, prev = 0x7fff9ea1e8b8}}, {head = {next = 0x7fff9ea1e8c8, prev = 0x7fff9ea1e8c8}}, {head = {next = 0x7fff9ea1e8d8, 
                        prev = 0x7fff9ea1e8d8}}, {head = {next = 0x7fff9ea1e8e8, prev = 0x7fff9ea1e8e8}}, {head = {next = 0x7fff9ea1e8f8, prev = 0x7fff9ea1e8f8}}, {head = {next = 0x7fff9ea1e908, prev = 0x7fff9ea1e908}}, {head = {next = 0x7fff9ea1e918, prev = 0x7fff9ea1e918}}, {head = {next = 0x7fff9ea1e928, 
                        prev = 0x7fff9ea1e928}}, {head = {next = 0x7fff9ea1e938, prev = 0x7fff9ea1e938}}, {head = {next = 0x7fff9ea1e948, prev = 0x7fff9ea1e948}}, {head = {next = 0x7fff9ea1e958, prev = 0x7fff9ea1e958}}, {head = {next = 0x7fff9ea1e968, prev = 0x7fff9ea1e968}}, {head = {next = 0x7fff9ea1e978, 
                        prev = 0x7fff9ea1e978}}, {head = {next = 0x7fff9ea1e988, prev = 0x7fff9ea1e988}}, {head = {next = 0x7fff9ea1e998, prev = 0x7fff9ea1e998}}, {head = {next = 0x7fff9ea1e9a8, prev = 0x7fff9ea1e9a8}}, {head = {next = 0x7fff9ea1e9b8, prev = 0x7fff9ea1e9b8}}, {head = {next = 0x7fff9ea1e9c8, 
                        prev = 0x7fff9ea1e9c8}}, {head = {next = 0x7fff9ea1e9d8, prev = 0x7fff9ea1e9d8}}, {head = {next = 0x7fff9ea1e9e8, prev = 0x7fff9ea1e9e8}}, {head = {next = 0x7fff9ea1e9f8, prev = 0x7fff9ea1e9f8}}, {head = {next = 0x7fff9ea1ea08, prev = 0x7fff9ea1ea08}}, {head = {next = 0x7fff9ea1ea18, 
                        prev = 0x7fff9ea1ea18}}, {head = {next = 0x7fff9ea1ea28, prev = 0x7fff9ea1ea28}}, {head = {next = 0x7fff9ea1ea38, prev = 0x7fff9ea1ea38}}, {head = {next = 0x7fff9ea1ea48, prev = 0x7fff9ea1ea48}}, {head = {next = 0x7fff9ea1ea58, prev = 0x7fff9ea1ea58}}, {head = {next = 0x7fff9ea1ea68, 
                        prev = 0x7fff9ea1ea68}}, {head = {next = 0x7fff9ea1ea78, prev = 0x7fff9ea1ea78}}, {head = {next = 0x7fff9ea1ea88, prev = 0x7fff9ea1ea88}}, {head = {next = 0x7fff9ea1ea98, prev = 0x7fff9ea1ea98}}, {head = {next = 0x7fff9ea1eaa8, prev = 0x7fff9ea1eaa8}}, {head = {next = 0x7fff9ea1eab8, 
                        prev = 0x7fff9ea1eab8}}, {head = {next = 0x7fff9ea1eac8, prev = 0x7fff9ea1eac8}}, {head = {next = 0x7fff9ea1ead8, prev = 0x7fff9ea1ead8}}, {head = {next = 0x7fff9ea1eae8, prev = 0x7fff9ea1eae8}}, {head = {next = 0x7fff9ea1eaf8, prev = 0x7fff9ea1eaf8}}, {head = {next = 0x7fff9ea1eb08, 
                        prev = 0x7fff9ea1eb08}}, {head = {next = 0x7fff9ea1eb18, prev = 0x7fff9ea1eb18}}, {head = {next = 0x7fff9ea1eb28, prev = 0x7fff9ea1eb28}}, {head = {next = 0x7fff9ea1eb38, prev = 0x7fff9ea1eb38}}, {head = {next = 0x7fff9ea1eb48, prev = 0x7fff9ea1eb48}}, {head = {next = 0x7fff9ea1eb58, 
                        prev = 0x7fff9ea1eb58}}, {head = {next = 0x7fff9ea1eb68, prev = 0x7fff9ea1eb68}}, {head = {next = 0x7fff9ea1eb78, prev = 0x7fff9ea1eb78}}, {head = {next = 0x7fff9ea1eb88, prev = 0x7fff9ea1eb88}}, {head = {next = 0x7fff9ea1eb98, prev = 0x7fff9ea1eb98}}, {head = {next = 0x7fff9ea1eba8, 
                        prev = 0x7fff9ea1eba8}}, {head = {next = 0x7fff9ea1ebb8, prev = 0x7fff9ea1ebb8}}, {head = {next = 0x7fff9ea1ebc8, prev = 0x7fff9ea1ebc8}}, {head = {next = 0x7fff9ea1ebd8, prev = 0x7fff9ea1ebd8}}, {head = {next = 0x7fff9ea1ebe8, prev = 0x7fff9ea1ebe8}}, {head = {next = 0x7fff9ea1ebf8, 
                        prev = 0x7fff9ea1ebf8}}, {head = {next = 0x7fff9ea1ec08, prev = 0x7fff9ea1ec08}}, {head = {next = 0x7fff9ea1ec18, prev = 0x7fff9ea1ec18}}, {head = {next = 0x7fff9ea1ec28, prev = 0x7fff9ea1ec28}}, {head = {next = 0x7fff9ea1ec38, prev = 0x7fff9ea1ec38}}, {head = {next = 0x7fff9ea1ec48, 
                        prev = 0x7fff9ea1ec48}}, {head = {next = 0x7fff9ea1ec58, prev = 0x7fff9ea1ec58}}, {head = {next = 0x7fff9ea1ec68, prev = 0x7fff9ea1ec68}}, {head = {next = 0x7fff9ea1ec78, prev = 0x7fff9ea1ec78}}, {head = {next = 0x7fff9ea1ec88, prev = 0x7fff9ea1ec88}}, {head = {next = 0x7fff9ea1ec98, 
                        prev = 0x7fff9ea1ec98}}, {head = {next = 0x7fff9ea1eca8, prev = 0x7fff9ea1eca8}}, {head = {next = 0x7fff9ea1ecb8, prev = 0x7fff9ea1ecb8}}, {head = {next = 0x7fff9ea1ecc8, prev = 0x7fff9ea1ecc8}}, {head = {next = 0x7fff9ea1ecd8, prev = 0x7fff9ea1ecd8}}, {head = {next = 0x7fff9ea1ece8, 
                        prev = 0x7fff9ea1ece8}}, {head = {next = 0x7fff9ea1ecf8, prev = 0x7fff9ea1ecf8}}, {head = {next = 0x7fff9ea1ed08, prev = 0x7fff9ea1ed08}}, {head = {next = 0x7fff9ea1ed18, prev = 0x7fff9ea1ed18}}, {head = {next = 0x7fff9ea1ed28, prev = 0x7fff9ea1ed28}}, {head = {next = 0x7fff9ea1ed38, 
                        prev = 0x7fff9ea1ed38}}, {head = {next = 0x7fff9ea1ed48, prev = 0x7fff9ea1ed48}}, {head = {next = 0x7fff9ea1ed58, prev = 0x7fff9ea1ed58}}, {head = {next = 0x7fff9ea1ed68, prev = 0x7fff9ea1ed68}}, {head = {next = 0x7fff9ea1ed78, prev = 0x7fff9ea1ed78}}, {head = {next = 0x7fff9ea1ed88, 
                        prev = 0x7fff9ea1ed88}}, {head = {next = 0x7fff9ea1ed98, prev = 0x7fff9ea1ed98}}, {head = {next = 0x7fff9ea1eda8, prev = 0x7fff9ea1eda8}}, {head = {next = 0x7fff9ea1edb8, prev = 0x7fff9ea1edb8}}, {head = {next = 0x7fff9ea1edc8, prev = 0x7fff9ea1edc8}}, {head = {next = 0x7fff9ea1edd8, 
                        prev = 0x7fff9ea1edd8}}, {head = {next = 0x7fff9ea1ede8, prev = 0x7fff9ea1ede8}}, {head = {next = 0x7fff9ea1edf8, prev = 0x7fff9ea1edf8}}, {head = {next = 0x7fff9ea1ee08, prev = 0x7fff9ea1ee08}}, {head = {next = 0x7fff9ea1ee18, prev = 0x7fff9ea1ee18}}, {head = {next = 0x7fff9ea1ee28, 
                        prev = 0x7fff9ea1ee28}}, {head = {next = 0x7fff9ea1ee38, prev = 0x7fff9ea1ee38}}, {head = {next = 0x7fff9ea1ee48, prev = 0x7fff9ea1ee48}}, {head = {next = 0x7fff9ea1ee58, prev = 0x7fff9ea1ee58}}, {head = {next = 0x7fff9ea1ee68, prev = 0x7fff9ea1ee68}}, {head = {next = 0x7fff9ea1ee78, 
                        prev = 0x7fff9ea1ee78}}, {head = {next = 0x7fff9ea1ee88, prev = 0x7fff9ea1ee88}}, {head = {next = 0x7fff9ea1ee98, prev = 0x7fff9ea1ee98}}, {head = {next = 0x7fff9ea1eea8, prev = 0x7fff9ea1eea8}}, {head = {next = 0x7fff9ea1eeb8, prev = 0x7fff9ea1eeb8}}, {head = {next = 0x7fff9ea1eec8, 
                        prev = 0x7fff9ea1eec8}}, {head = {next = 0x7fff9ea1eed8, prev = 0x7fff9ea1eed8}}, {head = {next = 0x7fff9ea1eee8, prev = 0x7fff9ea1eee8}}, {head = {next = 0x7fff9ea1eef8, prev = 0x7fff9ea1eef8}}, {head = {next = 0x7fff9ea1ef08, prev = 0x7fff9ea1ef08}}, {head = {next = 0x7fff9ea1ef18, 
                        prev = 0x7fff9ea1ef18}}, {head = {next = 0x7fff9ea1ef28, prev = 0x7fff9ea1ef28}}, {head = {next = 0x7fff9ea1ef38, prev = 0x7fff9ea1ef38}}, {head = {next = 0x7fff9ea1ef48, prev = 0x7fff9ea1ef48}}, {head = {next = 0x7fff9ea1ef58, prev = 0x7fff9ea1ef58}}, {head = {next = 0x7fff9ea1ef68, 
                        prev = 0x7fff9ea1ef68}}, {head = {next = 0x7fff9ea1ef78, prev = 0x7fff9ea1ef78}}, {head = {next = 0x7fff9ea1ef88, prev = 0x7fff9ea1ef88}}, {head = {next = 0x7fff9ea1ef98, prev = 0x7fff9ea1ef98}}}}, ready = {head = {next = 0x7fff9ea1efa8, prev = 0x7fff9ea1efa8}}, last_time = {__d = {
                    __r = 149611000000000}}, empty = true}, timers = {
                timers = {<boost::intrusive::multiset_impl<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, unsigned long, false, void>> = {<boost::intrusive::bstree_impl<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, unsigned long, false, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, false, unsigned long, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase_hack<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, false, unsigned long, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase2<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::detail::ebo_functor_holder<boost::intrusive::tree_value_compare<FineTimerEvent*, TimerList::Compare, boost::move_detail::identity<FineTimerEvent>, bool, true>, void, false>> = {<boost::intrusive::tree_value_compare<FineTimerEvent*, TimerList::Compare, boost::move_detail::identity<FineTimerEvent>, bool, true>> = {<boost::intrusive::detail::ebo_functor_holder<TimerList::Compare, void, false>> = {<TimerList::Compare> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <boost::intrusive::bstbase3<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, (boost::intrusive::algo_types)5, void>> = {
                              holder = {<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>> = {<boost::intrusive::bhtraits_base<FineTimerEvent, boost::intrusive::rbtree_node<void*>*, boost::intrusive::dft_tag, 3>> = {<No data fields>}, static link_mode = boost::intrusive::auto_unlink}, root = {<boost::intrusive::rbtree_node<void*>> = {parent_ = 0x0, left_ = 0x7fff9ea1efc8, right_ = 0x7fff9ea1efc8, 
                                    color_ = boost::intrusive::rbtree_node<void*>::red_t}, <No data fields>}}}, <No data fields>}, <No data fields>}, <No data fields>}, static constant_time_size = false}, <No data fields>}, <No data fields>}}, defer = {head = {next = 0x7fff9ea1efe8, prev = 0x7fff9ea1efe8}}, idle = {
                head = {next = 0x7fff9ea1eff8, prev = 0x7fff9ea1eff8}}, mutex = {<std::__mutex_base> = {_M_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, 
                    __align = 0}}, <No data fields>}, inject = {<boost::intrusive::list_impl<boost::intrusive::bhtraits<InjectEvent, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)1, boost::intrusive::dft_tag, 1>, unsigned long, false, void>> = {static constant_time_size = false, 
                  data_ = {<boost::intrusive::bhtraits<InjectEvent, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)1, boost::intrusive::dft_tag, 1>> = {<boost::intrusive::bhtraits_base<InjectEvent, boost::intrusive::list_node<void*>*, boost::intrusive::dft_tag, 1>> = {<No data fields>}, 
                      static link_mode = boost::intrusive::safe_link}, root_plus_size_ = {<boost::intrusive::detail::size_holder<false, unsigned long, void>> = {<No data fields>}, m_header = {<boost::intrusive::list_node<void*>> = {next_ = 0x7fff9ea1f030, 
                          prev_ = 0x7fff9ea1f030}, <No data fields>}}}}, <No data fields>}, sockets = {head = {next = 0x1e1edd0, prev = 0x7f0444003b80}}, ready_sockets = {head = {next = 0x7fff9ea1f050, prev = 0x7fff9ea1f050}}, uring = std::unique_ptr<Uring::Manager> = {get() = 0x1e1ece0}, thread = {
                id = 139656404244032}, alive = true, quit = {_M_base = {static _S_alignment = 1, _M_i = false}, static is_always_lock_free = true}, again = false, busy = false, uring_initialized = true, poll_backend = {epoll = {fd = {<FileDescriptor> = {fd = 6}, <No data fields>}}}, steady_clock_cache = {value = {
                  __d = {__r = 149611408570933}}}}, thread = {f = {instance_ = 0x7fff9ea1e7e8, function = 0x43bdf4 <BindMethodDetail::WrapperGenerator<void (EventThread::*)() noexcept, &EventThread::Run>::Invoke(void*)>}, handle = 139656404244032, inside_handle = 139656404244032}, realtime = false}, rtio_thread = {
            event_loop = {wake_fd = {fd = {fd = {<FileDescriptor> = {fd = 7}, <No data fields>}}}, wake_event = {<IntrusiveListHook> = {siblings = {next = 0x7fff9ea1f908, prev = 0x7fff9ea1f908}}, <EpollEvents> = {static READ = 1, static WRITE = 4, static ERROR = 8, static HANGUP = 16}, loop = @0x7fff9ea1f0b0, 
                callback = {instance_ = 0x7fff9ea1f0b0, function = 0x470952 <BindMethodDetail::WrapperGenerator<void (EventLoop::*)(unsigned int) noexcept, &EventLoop::OnSocketReady>::Invoke(void*, unsigned int)>}, fd = {<FileDescriptor> = {fd = 7}, <No data fields>}, scheduled_flags = 25, ready_flags = 0, 
                static IMPLICIT_FLAGS = 24}, coarse_timers = {static RESOLUTION = {__r = 1000000000}, static SPAN = <same as static member of an already seen type>, static N_BUCKETS = 120, buckets = {_M_elems = {{head = {next = 0x7fff9ea1f0f0, prev = 0x7fff9ea1f0f0}}, {head = {next = 0x7fff9ea1f100, 
                        prev = 0x7fff9ea1f100}}, {head = {next = 0x7fff9ea1f110, prev = 0x7fff9ea1f110}}, {head = {next = 0x7fff9ea1f120, prev = 0x7fff9ea1f120}}, {head = {next = 0x7fff9ea1f130, prev = 0x7fff9ea1f130}}, {head = {next = 0x7fff9ea1f140, prev = 0x7fff9ea1f140}}, {head = {next = 0x7fff9ea1f150, 
                        prev = 0x7fff9ea1f150}}, {head = {next = 0x7fff9ea1f160, prev = 0x7fff9ea1f160}}, {head = {next = 0x7fff9ea1f170, prev = 0x7fff9ea1f170}}, {head = {next = 0x7fff9ea1f180, prev = 0x7fff9ea1f180}}, {head = {next = 0x7fff9ea1f190, prev = 0x7fff9ea1f190}}, {head = {next = 0x7fff9ea1f1a0, 
                        prev = 0x7fff9ea1f1a0}}, {head = {next = 0x7fff9ea1f1b0, prev = 0x7fff9ea1f1b0}}, {head = {next = 0x7fff9ea1f1c0, prev = 0x7fff9ea1f1c0}}, {head = {next = 0x7fff9ea1f1d0, prev = 0x7fff9ea1f1d0}}, {head = {next = 0x7fff9ea1f1e0, prev = 0x7fff9ea1f1e0}}, {head = {next = 0x7fff9ea1f1f0, 
                        prev = 0x7fff9ea1f1f0}}, {head = {next = 0x7fff9ea1f200, prev = 0x7fff9ea1f200}}, {head = {next = 0x7fff9ea1f210, prev = 0x7fff9ea1f210}}, {head = {next = 0x7fff9ea1f220, prev = 0x7fff9ea1f220}}, {head = {next = 0x7fff9ea1f230, prev = 0x7fff9ea1f230}}, {head = {next = 0x7fff9ea1f240, 
                        prev = 0x7fff9ea1f240}}, {head = {next = 0x7fff9ea1f250, prev = 0x7fff9ea1f250}}, {head = {next = 0x7fff9ea1f260, prev = 0x7fff9ea1f260}}, {head = {next = 0x7fff9ea1f270, prev = 0x7fff9ea1f270}}, {head = {next = 0x7fff9ea1f280, prev = 0x7fff9ea1f280}}, {head = {next = 0x7fff9ea1f290, 
                        prev = 0x7fff9ea1f290}}, {head = {next = 0x7fff9ea1f2a0, prev = 0x7fff9ea1f2a0}}, {head = {next = 0x7fff9ea1f2b0, prev = 0x7fff9ea1f2b0}}, {head = {next = 0x7fff9ea1f2c0, prev = 0x7fff9ea1f2c0}}, {head = {next = 0x7fff9ea1f2d0, prev = 0x7fff9ea1f2d0}}, {head = {next = 0x7fff9ea1f2e0, 
                        prev = 0x7fff9ea1f2e0}}, {head = {next = 0x7fff9ea1f2f0, prev = 0x7fff9ea1f2f0}}, {head = {next = 0x7fff9ea1f300, prev = 0x7fff9ea1f300}}, {head = {next = 0x7fff9ea1f310, prev = 0x7fff9ea1f310}}, {head = {next = 0x7fff9ea1f320, prev = 0x7fff9ea1f320}}, {head = {next = 0x7fff9ea1f330, 
                        prev = 0x7fff9ea1f330}}, {head = {next = 0x7fff9ea1f340, prev = 0x7fff9ea1f340}}, {head = {next = 0x7fff9ea1f350, prev = 0x7fff9ea1f350}}, {head = {next = 0x7fff9ea1f360, prev = 0x7fff9ea1f360}}, {head = {next = 0x7fff9ea1f370, prev = 0x7fff9ea1f370}}, {head = {next = 0x7fff9ea1f380, 
                        prev = 0x7fff9ea1f380}}, {head = {next = 0x7fff9ea1f390, prev = 0x7fff9ea1f390}}, {head = {next = 0x7fff9ea1f3a0, prev = 0x7fff9ea1f3a0}}, {head = {next = 0x7fff9ea1f3b0, prev = 0x7fff9ea1f3b0}}, {head = {next = 0x7fff9ea1f3c0, prev = 0x7fff9ea1f3c0}}, {head = {next = 0x7fff9ea1f3d0, 
                        prev = 0x7fff9ea1f3d0}}, {head = {next = 0x7fff9ea1f3e0, prev = 0x7fff9ea1f3e0}}, {head = {next = 0x7fff9ea1f3f0, prev = 0x7fff9ea1f3f0}}, {head = {next = 0x7fff9ea1f400, prev = 0x7fff9ea1f400}}, {head = {next = 0x7fff9ea1f410, prev = 0x7fff9ea1f410}}, {head = {next = 0x7fff9ea1f420, 
                        prev = 0x7fff9ea1f420}}, {head = {next = 0x7fff9ea1f430, prev = 0x7fff9ea1f430}}, {head = {next = 0x7fff9ea1f440, prev = 0x7fff9ea1f440}}, {head = {next = 0x7fff9ea1f450, prev = 0x7fff9ea1f450}}, {head = {next = 0x7fff9ea1f460, prev = 0x7fff9ea1f460}}, {head = {next = 0x7fff9ea1f470, 
                        prev = 0x7fff9ea1f470}}, {head = {next = 0x7fff9ea1f480, prev = 0x7fff9ea1f480}}, {head = {next = 0x7fff9ea1f490, prev = 0x7fff9ea1f490}}, {head = {next = 0x7fff9ea1f4a0, prev = 0x7fff9ea1f4a0}}, {head = {next = 0x7fff9ea1f4b0, prev = 0x7fff9ea1f4b0}}, {head = {next = 0x7fff9ea1f4c0, 
                        prev = 0x7fff9ea1f4c0}}, {head = {next = 0x7fff9ea1f4d0, prev = 0x7fff9ea1f4d0}}, {head = {next = 0x7fff9ea1f4e0, prev = 0x7fff9ea1f4e0}}, {head = {next = 0x7fff9ea1f4f0, prev = 0x7fff9ea1f4f0}}, {head = {next = 0x7fff9ea1f500, prev = 0x7fff9ea1f500}}, {head = {next = 0x7fff9ea1f510, 
                        prev = 0x7fff9ea1f510}}, {head = {next = 0x7fff9ea1f520, prev = 0x7fff9ea1f520}}, {head = {next = 0x7fff9ea1f530, prev = 0x7fff9ea1f530}}, {head = {next = 0x7fff9ea1f540, prev = 0x7fff9ea1f540}}, {head = {next = 0x7fff9ea1f550, prev = 0x7fff9ea1f550}}, {head = {next = 0x7fff9ea1f560, 
                        prev = 0x7fff9ea1f560}}, {head = {next = 0x7fff9ea1f570, prev = 0x7fff9ea1f570}}, {head = {next = 0x7fff9ea1f580, prev = 0x7fff9ea1f580}}, {head = {next = 0x7fff9ea1f590, prev = 0x7fff9ea1f590}}, {head = {next = 0x7fff9ea1f5a0, prev = 0x7fff9ea1f5a0}}, {head = {next = 0x7fff9ea1f5b0, 
                        prev = 0x7fff9ea1f5b0}}, {head = {next = 0x7fff9ea1f5c0, prev = 0x7fff9ea1f5c0}}, {head = {next = 0x7fff9ea1f5d0, prev = 0x7fff9ea1f5d0}}, {head = {next = 0x7fff9ea1f5e0, prev = 0x7fff9ea1f5e0}}, {head = {next = 0x7fff9ea1f5f0, prev = 0x7fff9ea1f5f0}}, {head = {next = 0x7fff9ea1f600, 
                        prev = 0x7fff9ea1f600}}, {head = {next = 0x7fff9ea1f610, prev = 0x7fff9ea1f610}}, {head = {next = 0x7fff9ea1f620, prev = 0x7fff9ea1f620}}, {head = {next = 0x7fff9ea1f630, prev = 0x7fff9ea1f630}}, {head = {next = 0x7fff9ea1f640, prev = 0x7fff9ea1f640}}, {head = {next = 0x7fff9ea1f650, 
                        prev = 0x7fff9ea1f650}}, {head = {next = 0x7fff9ea1f660, prev = 0x7fff9ea1f660}}, {head = {next = 0x7fff9ea1f670, prev = 0x7fff9ea1f670}}, {head = {next = 0x7fff9ea1f680, prev = 0x7fff9ea1f680}}, {head = {next = 0x7fff9ea1f690, prev = 0x7fff9ea1f690}}, {head = {next = 0x7fff9ea1f6a0, 
                        prev = 0x7fff9ea1f6a0}}, {head = {next = 0x7fff9ea1f6b0, prev = 0x7fff9ea1f6b0}}, {head = {next = 0x7fff9ea1f6c0, prev = 0x7fff9ea1f6c0}}, {head = {next = 0x7fff9ea1f6d0, prev = 0x7fff9ea1f6d0}}, {head = {next = 0x7fff9ea1f6e0, prev = 0x7fff9ea1f6e0}}, {head = {next = 0x7fff9ea1f6f0, 
                        prev = 0x7fff9ea1f6f0}}, {head = {next = 0x7fff9ea1f700, prev = 0x7fff9ea1f700}}, {head = {next = 0x7fff9ea1f710, prev = 0x7fff9ea1f710}}, {head = {next = 0x7fff9ea1f720, prev = 0x7fff9ea1f720}}, {head = {next = 0x7fff9ea1f730, prev = 0x7fff9ea1f730}}, {head = {next = 0x7fff9ea1f740, 
                        prev = 0x7fff9ea1f740}}, {head = {next = 0x7fff9ea1f750, prev = 0x7fff9ea1f750}}, {head = {next = 0x7fff9ea1f760, prev = 0x7fff9ea1f760}}, {head = {next = 0x7fff9ea1f770, prev = 0x7fff9ea1f770}}, {head = {next = 0x7fff9ea1f780, prev = 0x7fff9ea1f780}}, {head = {next = 0x7fff9ea1f790, 
                        prev = 0x7fff9ea1f790}}, {head = {next = 0x7fff9ea1f7a0, prev = 0x7fff9ea1f7a0}}, {head = {next = 0x7fff9ea1f7b0, prev = 0x7fff9ea1f7b0}}, {head = {next = 0x7fff9ea1f7c0, prev = 0x7fff9ea1f7c0}}, {head = {next = 0x7fff9ea1f7d0, prev = 0x7fff9ea1f7d0}}, {head = {next = 0x7fff9ea1f7e0, 
                        prev = 0x7fff9ea1f7e0}}, {head = {next = 0x7fff9ea1f7f0, prev = 0x7fff9ea1f7f0}}, {head = {next = 0x7fff9ea1f800, prev = 0x7fff9ea1f800}}, {head = {next = 0x7fff9ea1f810, prev = 0x7fff9ea1f810}}, {head = {next = 0x7fff9ea1f820, prev = 0x7fff9ea1f820}}, {head = {next = 0x7fff9ea1f830, 
                        prev = 0x7fff9ea1f830}}, {head = {next = 0x7fff9ea1f840, prev = 0x7fff9ea1f840}}, {head = {next = 0x7fff9ea1f850, prev = 0x7fff9ea1f850}}, {head = {next = 0x7fff9ea1f860, prev = 0x7fff9ea1f860}}}}, ready = {head = {next = 0x7fff9ea1f870, prev = 0x7fff9ea1f870}}, last_time = {__d = {
                    __r = 149594000000000}}, empty = true}, timers = {
                timers = {<boost::intrusive::multiset_impl<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, unsigned long, false, void>> = {<boost::intrusive::bstree_impl<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, unsigned long, false, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, false, unsigned long, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase_hack<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, false, unsigned long, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::bstbase2<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, void, TimerList::Compare, (boost::intrusive::algo_types)5, void>> = {<boost::intrusive::detail::ebo_functor_holder<boost::intrusive::tree_value_compare<FineTimerEvent*, TimerList::Compare, boost::move_detail::identity<FineTimerEvent>, bool, true>, void, false>> = {<boost::intrusive::tree_value_compare<FineTimerEvent*, TimerList::Compare, boost::move_detail::identity<FineTimerEvent>, bool, true>> = {<boost::intrusive::detail::ebo_functor_holder<TimerList::Compare, void, false>> = {<TimerList::Compare> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <boost::intrusive::bstbase3<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>, (boost::intrusive::algo_types)5, void>> = {
                              holder = {<boost::intrusive::bhtraits<FineTimerEvent, boost::intrusive::rbtree_node_traits<void*, false>, (boost::intrusive::link_mode_type)2, boost::intrusive::dft_tag, 3>> = {<boost::intrusive::bhtraits_base<FineTimerEvent, boost::intrusive::rbtree_node<void*>*, boost::intrusive::dft_tag, 3>> = {<No data fields>}, static link_mode = boost::intrusive::auto_unlink}, root = {<boost::intrusive::rbtree_node<void*>> = {parent_ = 0x0, left_ = 0x7fff9ea1f890, right_ = 0x7fff9ea1f890, 
                                    color_ = boost::intrusive::rbtree_node<void*>::red_t}, <No data fields>}}}, <No data fields>}, <No data fields>}, <No data fields>}, static constant_time_size = false}, <No data fields>}, <No data fields>}}, defer = {head = {next = 0x7fff9ea1f8b0, prev = 0x7fff9ea1f8b0}}, idle = {
                head = {next = 0x7fff9ea1f8c0, prev = 0x7fff9ea1f8c0}}, mutex = {<std::__mutex_base> = {_M_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, 
--Type <RET> for more, q to quit, c to continue without paging--
                    __align = 0}}, <No data fields>}, inject = {<boost::intrusive::list_impl<boost::intrusive::bhtraits<InjectEvent, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)1, boost::intrusive::dft_tag, 1>, unsigned long, false, void>> = {static constant_time_size = false, 
                  data_ = {<boost::intrusive::bhtraits<InjectEvent, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)1, boost::intrusive::dft_tag, 1>> = {<boost::intrusive::bhtraits_base<InjectEvent, boost::intrusive::list_node<void*>*, boost::intrusive::dft_tag, 1>> = {<No data fields>}, 
                      static link_mode = boost::intrusive::safe_link}, root_plus_size_ = {<boost::intrusive::detail::size_holder<false, unsigned long, void>> = {<No data fields>}, m_header = {<boost::intrusive::list_node<void*>> = {next_ = 0x7fff9ea1f8f8, 
                          prev_ = 0x7fff9ea1f8f8}, <No data fields>}}}}, <No data fields>}, sockets = {head = {next = 0x7fff9ea1f0b8, prev = 0x7fff9ea1f0b8}}, ready_sockets = {head = {next = 0x7fff9ea1f918, prev = 0x7fff9ea1f918}}, uring = std::unique_ptr<Uring::Manager> = {get() = 0x0}, thread = {
                id = 139656395851328}, alive = true, quit = {_M_base = {static _S_alignment = 1, _M_i = false}, static is_always_lock_free = true}, again = false, busy = false, uring_initialized = false, poll_backend = {epoll = {fd = {<FileDescriptor> = {fd = 8}, <No data fields>}}}, steady_clock_cache = {value = {
                  __d = {__r = 149594029736968}}}}, thread = {f = {instance_ = 0x7fff9ea1f0b0, function = 0x43bdf4 <BindMethodDetail::WrapperGenerator<void (EventThread::*)() noexcept, &EventThread::Run>::Invoke(void*)>}, handle = 139656395851328, inside_handle = 139656395851328}, realtime = true}, 
          systemd_watchdog = {
            timer = {<boost::intrusive::set_base_hook<boost::intrusive::link_mode<(boost::intrusive::link_mode_type)2> >> = {<boost::intrusive::generic_hook<(boost::intrusive::algo_types)5, boost::intrusive::rbtree_node_traits<void*, false>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)2, (boost::intrusive::base_hook_type)3>> = {<boost::intrusive::node_holder<boost::intrusive::rbtree_node<void*>, boost::intrusive::dft_tag, 3>> = {<boost::intrusive::rbtree_node<void*>> = {parent_ = 0x0, left_ = 0x0, right_ = 0x0, 
                      color_ = boost::intrusive::rbtree_node<void*>::red_t}, <No data fields>}, <boost::intrusive::hook_tags_definer<boost::intrusive::generic_hook<(boost::intrusive::algo_types)5, boost::intrusive::rbtree_node_traits<void*, false>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)2, (boost::intrusive::base_hook_type)3>, 3>> = {<No data fields>}, <No data fields>}, <No data fields>}, loop = @0x7fff9ea1df38, callback = {instance_ = 0x7fff9ea1f978, function = 0x514095 <BindMethodDetail::WrapperGenerator<void (Systemd::Watchdog::*)() noexcept, &Systemd::Watchdog::OnTimer>::Invoke(void*)>}, due = {__d = {
                  __r = 0}}}, interval = {__r = 140735854803627}}, input_cache = std::unique_ptr<InputCacheManager> = {get() = 0x0}, idle_monitor = {
            event = {<boost::intrusive::list_base_hook<>> = {<boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)1>> = {<boost::intrusive::node_holder<boost::intrusive::list_node<void*>, boost::intrusive::dft_tag, 1>> = {<boost::intrusive::list_node<void*>> = {next_ = 0x7fff9ea1e780, 
                      prev_ = 0x7fff9ea1e780}, <No data fields>}, <boost::intrusive::hook_tags_definer<boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)1>, 1>> = {<No data fields>}, <No data fields>}, <No data fields>}, loop = @0x7fff9ea1df38, callback = {instance_ = 0x7fff9ea1f9c8, function = 0x43be02 <BindMethodDetail::WrapperGenerator<void (MaskMonitor::*)() noexcept, &MaskMonitor::RunDeferred>::Invoke(void*)>}}, callback = {instance_ = 0x7fff9ea1df30, 
              function = 0x43c120 <BindMethodDetail::WrapperGenerator<void (Instance::*)(unsigned int) noexcept, &Instance::OnIdle>::Invoke(void*, unsigned int)>}, pending_mask = {<std::__atomic_base<unsigned int>> = {static _S_alignment = 4, _M_i = 16}, static is_always_lock_free = true}}, 
          neighbors = std::unique_ptr<NeighborGlue> = {get() = 0x0}, database = std::unique_ptr<Database> = {get() = 0x1dd34b0}, storage = 0x1deec20, update = 0x0, inotify_update = std::unique_ptr<InotifyUpdate> = {get() = 0x0}, remote_tag_cache = std::unique_ptr<RemoteTagCache> = {get() = 0x0}, 
          client_list = std::unique_ptr<ClientList> = {get() = 0x1dd3330}, partitions = std::__cxx11::list = {[0] = {<QueueListener> = {_vptr.QueueListener = 0x59e2b8 <vtable for Partition+16>}, <PlayerListener> = {_vptr.PlayerListener = 0x59e300 <vtable for Partition+88>}, <MixerListener> = {
                _vptr.MixerListener = 0x59e328 <vtable for Partition+128>}, static TAG_MODIFIED = 1, static SYNC_WITH_PLAYER = 2, static BORDER_PAUSE = 4, instance = @0x7fff9ea1df30, name = "default", listener = std::unique_ptr<ClientListener> = {get() = 0x1dd32f0}, 
              clients = {<boost::intrusive::list_impl<boost::intrusive::bhtraits<Client, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)0, Partition, 1>, unsigned long, false, void>> = {static constant_time_size = false, 
                  data_ = {<boost::intrusive::bhtraits<Client, boost::intrusive::list_node_traits<void*>, (boost::intrusive::link_mode_type)0, Partition, 1>> = {<boost::intrusive::bhtraits_base<Client, boost::intrusive::list_node<void*>*, Partition, 1>> = {<No data fields>}, 
                      static link_mode = boost::intrusive::normal_link}, root_plus_size_ = {<boost::intrusive::detail::size_holder<false, unsigned long, void>> = {<No data fields>}, m_header = {<boost::intrusive::list_node<void*>> = {next_ = 0x1e411b8, prev_ = 0x1e473f8}, <No data fields>}}}}, <No data fields>}, 
              idle_monitor = {
                event = {<boost::intrusive::list_base_hook<>> = {<boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)1>> = {<boost::intrusive::node_holder<boost::intrusive::list_node<void*>, boost::intrusive::dft_tag, 1>> = {<boost::intrusive::list_node<void*>> = {next_ = 0x0, 
                          prev_ = 0x0}, <No data fields>}, <boost::intrusive::hook_tags_definer<boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)1>, 1>> = {<No data fields>}, <No data fields>}, <No data fields>}, loop = @0x7fff9ea1df38, callback = {instance_ = 0x1dd4968, function = 0x43be02 <BindMethodDetail::WrapperGenerator<void (MaskMonitor::*)() noexcept, &MaskMonitor::RunDeferred>::Invoke(void*)>}}, callback = {instance_ = 0x1dd4910, 
                  function = 0x43df92 <BindMethodDetail::WrapperGenerator<void (Partition::*)(unsigned int) noexcept, &Partition::OnIdleMonitor>::Invoke(void*, unsigned int)>}, pending_mask = {<std::__atomic_base<unsigned int>> = {static _S_alignment = 4, _M_i = 0}, static is_always_lock_free = true}}, 
              global_events = {
                event = {<boost::intrusive::list_base_hook<>> = {<boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)1>> = {<boost::intrusive::node_holder<boost::intrusive::list_node<void*>, boost::intrusive::dft_tag, 1>> = {<boost::intrusive::list_node<void*>> = {next_ = 0x0, 
                          prev_ = 0x0}, <No data fields>}, <boost::intrusive::hook_tags_definer<boost::intrusive::generic_hook<(boost::intrusive::algo_types)0, boost::intrusive::list_node_traits<void*>, boost::intrusive::dft_tag, (boost::intrusive::link_mode_type)1, (boost::intrusive::base_hook_type)1>, 1>> = {<No data fields>}, <No data fields>}, <No data fields>}, loop = @0x7fff9ea1df38, callback = {instance_ = 0x1dd49a8, function = 0x43be02 <BindMethodDetail::WrapperGenerator<void (MaskMonitor::*)() noexcept, &MaskMonitor::RunDeferred>::Invoke(void*)>}}, callback = {instance_ = 0x1dd4910, 
                  function = 0x43e489 <BindMethodDetail::WrapperGenerator<void (Partition::*)(unsigned int) noexcept, &Partition::OnGlobalEvent>::Invoke(void*, unsigned int)>}, pending_mask = {<std::__atomic_base<unsigned int>> = {static _S_alignment = 4, _M_i = 0}, static is_always_lock_free = true}}, playlist = {
                queue = {static HASH_MULT = 4, max_length = 16384, length = 19, version = 3, items = 0x7f044a68f010, order = 0x1dd5f70, id_table = {size = 65536, initialized = 20, next = 20, data = 0x7f044a64e010}, repeat = false, single = SingleMode::OFF, consume = true, random = false, rand = {
                    engine = std::optional<std::mt19937> [no contained value]}}, listener = @0x1dd4910, playing = false, stop_on_error = false, bulk_edit = false, bulk_modified = true, error_count = 0, current = -1, queued = -1}, outputs = {<PlayerOutputs> = {
                  _vptr.PlayerOutputs = 0x59f538 <vtable for MultipleOutputs+16>}, client = @0x1dd5e18, mixer_listener = @0x1dd4920, outputs = std::vector of length 2, capacity 2 = {std::unique_ptr<AudioOutputControl> = {get() = 0x1e1e8b0}, std::unique_ptr<AudioOutputControl> = {get() = 0x1e1eb40}}, 
                input_audio_format = {sample_rate = 0, format = SampleFormat::UNDEFINED, channels = 0 '\000'}, pipe = std::unique_ptr<MusicPipe> = {get() = 0x0}, elapsed_time = {<std::chrono::duration<int, std::ratio<1, 1000> >> = {__r = -1}, <No data fields>}}, pc = {<AudioOutputClient> = {
                  _vptr.AudioOutputClient = 0x59e3f8 <vtable for PlayerControl+16>}, listener = @0x1dd4918, outputs = @0x1dd5dd0, input_cache = 0x0, buffer_chunks = 1024, configured_audio_format = {sample_rate = 0, format = SampleFormat::UNDEFINED, channels = 0 '\000'}, thread = {f = {instance_ = 0x1dd5e18, 
                    function = 0x443bd4 <BindMethodDetail::WrapperGenerator<void (PlayerControl::*)() noexcept, &PlayerControl::RunThread>::Invoke(void*)>}, handle = 0, inside_handle = 0}, mutex = {<std::__mutex_base> = {_M_mutex = {__data = {__lock = 0, __count = 0, __owner = 0, __nusers = 0, __kind = 0, 
                        __spins = 0, __elision = 0, __list = {__prev = 0x0, __next = 0x0}}, __size = '\000' <repeats 39 times>, __align = 0}}, <No data fields>}, cond = {_M_cond = {_M_cond = {__data = {{__wseq = 0, __wseq32 = {__low = 0, __high = 0}}, {__g1_start = 0, __g1_start32 = {__low = 0, __high = 0}}, 
                        __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 0, __wrefs = 0, __g_signals = {0, 0}}, __size = '\000' <repeats 47 times>, __align = 0}}}, client_cond = {_M_cond = {_M_cond = {__data = {{__wseq = 0, __wseq32 = {__low = 0, __high = 0}}, {__g1_start = 0, __g1_start32 = {__low = 0, 
                            __high = 0}}, __g_refs = {0, 0}, __g_size = {0, 0}, __g1_orig_size = 0, __wrefs = 0, __g_signals = {0, 0}}, __size = '\000' <repeats 47 times>, __align = 0}}}, error = {_M_exception_object = 0x0}, next_song = std::unique_ptr<DetachedSong> = {get() = 0x0}, 
                tagged_song = std::unique_ptr<DetachedSong> = {get() = 0x0}, command = PlayerCommand::NONE, state = PlayerState::STOP, error_type = PlayerError::NONE, replay_gain_mode = ReplayGainMode::OFF, seeking = false, border_pause = false, occupied = false, audio_format = {sample_rate = 0, 
                  format = SampleFormat::UNDEFINED, channels = 0 '\000'}, bit_rate = 0, total_time = {<std::chrono::duration<int, std::ratio<1, 1000> >> = {__r = 0}, <No data fields>}, elapsed_time = {<std::chrono::duration<unsigned int, std::ratio<1, 1000> >> = {__r = 0}, <No data fields>}, 
                seek_time = {<std::chrono::duration<unsigned int, std::ratio<1, 1000> >> = {__r = 0}, <No data fields>}, cross_fade = {static MIN_TOTAL_TIME = {<std::chrono::duration<int, std::ratio<1, 1000> >> = {__r = 20000}, <No data fields>}, duration = {__r = 0}, mixramp_db = 0, mixramp_delay = {__r = -1}}, 
                replay_gain_config = {static DEFAULT_LIMIT = true, preamp = 1, missing_preamp = 1, limit = true}, total_play_time = {__r = 0}}, replay_gain_mode = ReplayGainMode::OFF}}, state_file = std::unique_ptr<StateFile> = {get() = 0x1e3bd80}, sticker_database = std::unique_ptr<StickerDatabase> = {
            get() = 0x1dd3360}}
        max_clients = <optimized out>
        input_cache_config = <optimized out>
        at_scope_exit_436 = {<> = {<No data fields>}, enabled = true}
        at_scope_exit_440 = {<> = {<No data fields>}, enabled = true}
        archive_plugins_init = <optimized out>
        decoder_plugins_init = <optimized out>
        create_db = false
        input_plugins_init = <optimized out>
        playlist_plugins_init = <optimized out>
        signal_handlers_init = <optimized out>
        at_scope_exit_495 = {<> = {__instance = @0x7fff9ea1df30}, enabled = true}
        zeroconf = std::unique_ptr<ZeroconfHelper> = {get() = 0x7f0444000b60}
        at_scope_exit_513 = {<> = {__zeroconf = std::unique_ptr<ZeroconfHelper> = {get() = 0x7f0444000b60}, __instance = @0x7fff9ea1df30}, enabled = true}
#23 0x000000000042002c in MainOrThrow (argc=<optimized out>, argv=<optimized out>) at ../src/Main.cxx:661
        options = {kill = false, daemon = false, systemd = true, log_stderr = false, verbose = false}
        raw_config = {params = {_M_elems = {std::forward_list = {[0] = {value = "/media/music", line = 5}}, std::forward_list = {[0] = {value = "/var/lib/mpd/playlists", line = 6}}, empty std::forward_list, empty std::forward_list, empty std::forward_list, std::forward_list = {[0] = {
                  value = "/var/lib/mpd/sticker.sql", line = 9}}, empty std::forward_list, empty std::forward_list, std::forward_list = {[0] = {value = "/var/lib/mpd/state", line = 8}}, empty std::forward_list, empty std::forward_list, empty std::forward_list, empty std::forward_list, std::forward_list = {[0] = {
                  value = "::", line = 11}}, empty std::forward_list, empty std::forward_list, std::forward_list = {[0] = {value = "lounge", line = 31}}, std::forward_list = {[0] = {value = "yes", line = 30}}, empty std::forward_list <repeats 33 times>}}, blocks = {_M_elems = {std::forward_list = {[0] = {line = 17, 
                  block_params = std::vector of length 2, capacity 2 = {{name = "type", value = "pipewire", line = 18, used = true}, {name = "name", value = "Pipewire", line = 19, used = true}}, used = true}, [1] = {line = 22, block_params = std::vector of length 5, capacity 8 = {{name = "type", value = "fifo", 
                      line = 23, used = true}, {name = "name", value = "Snapcast", line = 24, used = true}, {name = "path", value = "/run/snapserver/mpd", line = 25, used = true}, {name = "format", value = "48000:16:2", line = 26, used = true}, {name = "mixer_type", value = "software", line = 27, used = true}}, 
                  used = true}}, empty std::forward_list, empty std::forward_list, empty std::forward_list, empty std::forward_list, empty std::forward_list, empty std::forward_list, std::forward_list = {[0] = {line = 33, block_params = std::vector of length 2, capacity 2 = {{name = "plugin", value = "proxy", 
                      line = 34, used = true}, {name = "host", value = "burbon.w17.io", line = 35, used = true}}, used = true}}, empty std::forward_list}}}
#24 0x00000000004200ea in mpd_main (argc=<optimized out>, argv=<optimized out>) at ../src/Main.cxx:667
No locals.
#25 0x0000000000420112 in main (argc=<optimized out>, argv=<optimized out>) at ../src/Main.cxx:679
        at_scope_exit_674 = {<> = {<No data fields>}, enabled = true}
yavko commented 2 years ago

I have the same issue on my system (EndeavourOS) altough this happens very inconsistently.

Same on manjaro, once I start playing a song it seg faults with something pipewire related EDIT: This issue seems to be fixed in master

MaxKellermann commented 2 years ago

This bug affects only MPD 0.23.6, it does not occur with 0.23.7 which had already been released a week before this bug was reported. That's why I was unable to reproduce it.