Skip to content

Occasional Crash when using evdns_getaddrinfo in Non-blocking mode #1130

@Jeevhi

Description

@Jeevhi

Occasional crash when using evdns_getaddrinfo with callback (Non-blocking). It generally happens when another non-blocking evdns_getaddrinfo() invoked for the same host even before the first request was over.

In our case, we noticed this only for the multiple requests for the same host but it maybe happening with different hosts too.

Below is the crash report. libevent version 2.1.12 stable.

Core was generated by `/simba/bin/simba'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fa633010ca7 in __sanitizer::SignalContext::GetAddress() const () from /lib64/libasan.so.5
[Current thread is 1 (Thread 0x7fa62d3ba700 (LWP 1174))]
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.28-42.el8.1.x86_64 libasan-8.2.1-3.5.el8.x86_64 libgcc-8.2.1-3.5.el8.x86_64 libstdc++-8.2.1-3.5.el8.x86_64 mysql-libs-8.0.17-3.module_el8.0.0+181+899d6349.x86_64 openssl-libs-1.1.1-8.el8.x86_64
(gdb) bt
#0  0x00007fa633010ca7 in __sanitizer::SignalContext::GetAddress() const () from /lib64/libasan.so.5
#1  0x00007fa632ff8329 in __asan::AsanOnDeadlySignal(int, void*, void*) () from /lib64/libasan.so.5
#2  0x000000000044d5f6 in signal_oldhandler (signo=signo@entry=11) at signal.cpp:96
#3  0x0000000000438c54 in on_signal (signo=11) at main.cpp:602
#4  <signal handler called>
#5  0x00000000005170e8 in min_heap_erase_ (e=0x6120007afdc0, s=0x617000103548) at minheap-internal.h:100
#6  event_queue_remove_timeout (base=base@entry=0x617000103400, ev=ev@entry=0x6120007afdc0) at event.c:3284
#7  0x0000000000518b6b in event_del_nolock_ (ev=ev@entry=0x6120007afdc0, blocking=blocking@entry=2) at event.c:2851
#8  0x0000000000518d12 in event_del_ (ev=0x6120007afdc0, blocking=2) at event.c:2780
#9  0x000000000052835c in free_getaddrinfo_request (data=0x6120007afd40) at evdns.c:4372
#10 0x000000000052d1ba in evdns_getaddrinfo_gotresolve (result=<optimized out>, type=<optimized out>, count=<optimized out>, 
    ttl=<optimized out>, addresses=<optimized out>, arg=<optimized out>) at evdns.c:4638
#11 0x0000000000526dbd in reply_run_callback (d=0x61600034b380, user_pointer=<optimized out>) at evdns.c:820
#12 0x000000000051b5da in event_process_active_single_queue (base=base@entry=0x617000103400, activeq=0x60200008cc50, 
    max_to_process=max_to_process@entry=2147483647, endtime=endtime@entry=0x0) at event.c:1697
#13 0x000000000051c067 in event_process_active (base=0x617000103400) at event.c:1783
#14 event_base_loop (base=0x617000103400, flags=flags@entry=0) at event.c:2006
#15 0x000000000051c2a7 in event_base_dispatch (event_base=<optimized out>) at event.c:1817
#16 0x000000000046e742 in async_run (data=0x60200008cc30) at asyncsock.cpp:916
#17 0x00007fa632cea2de in start_thread () from /lib64/libpthread.so.0
#18 0x00007fa6308caa63 in clone () from /lib64/libc.so.6

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions