Bug 2119478

Summary: aria2 coredumping on Fedora Linux in aria2::MultiUrlRequestInfo
Product: [Fedora] Fedora Reporter: Lonni J Friedman <netllama>
Component: aria2Assignee: Neil Hanlon <neil>
Status: NEW --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: 37CC: athmanem, neil
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Lonni J Friedman 2022-08-18 16:05:23 UTC
Description of problem:
aria2 is crashing when trying to view the in-progress downloads managed by its daemon

Version-Release number of selected component (if applicable):
1.35

How reproducible:
Intermittent


Steps to Reproduce:
1.run aria2 in server/daemon mode
2.start several torrents to download
3.attempt to view the status of the torrents
4.crash

Actual results:
segfault/coredump


Expected results:
no crash


Additional info:
Coredump backtrace is here:
```
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007f32adca1b63 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007f32adc552a6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007f32adc287f3 in __GI_abort () at abort.c:79
#4  0x0000556cf4000f18 in std::__replacement_assert (__file=<optimized out>, __line=<optimized out>, __function=<optimized out>, __condition=<optimized out>)
    at /usr/include/c++/11/x86_64-redhat-linux/bits/c++config.h:2660
#5  0x0000556cf4060ae6 in std::array<unsigned char, 4096ul>::operator[] (this=<optimized out>, __n=<optimized out>) at /usr/include/c++/11/array:186
#6  std::array<unsigned char, 4096ul>::operator[] (__n=<optimized out>, this=0x7ffefd6d2f70) at /usr/include/c++/11/array:186
#7  aria2::GZipEncoder::encode[abi:cxx11](unsigned char const*, unsigned long, int) (this=0x7ffefd6d4010, in=<optimized out>, length=<optimized out>, flush=4)
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/GZipEncoder.cc:90
#8  0x0000556cf4060b67 in aria2::GZipEncoder::str[abi:cxx11]() (this=0x7ffefd6d4010) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/GZipEncoder.cc:100
#9  0x0000556cf404a057 in aria2::rpc::toJson (res=..., callback="", gzip=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/RpcResponse.cc:188
#10 0x0000556cf4112e11 in aria2::HttpServerBodyCommand::sendJsonRpcResponse (this=0x556d03102dd0, res=..., callback="")
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/HttpServerBodyCommand.cc:108
#11 0x0000556cf4116b40 in aria2::HttpServerBodyCommand::execute (this=0x556d03102dd0) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/HttpServerBodyCommand.cc:287
#12 0x0000556cf40a6b66 in aria2::(anonymous namespace)::executeCommand (commands=std::deque with 186 elements = {...}, statusFilter=aria2::Command::STATUS_ACTIVE)
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/DownloadEngine.cc:139
#13 0x0000556cf3ffbe21 in aria2::DownloadEngine::run (oneshot=<optimized out>, this=0x556cf56eeee0)
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/DownloadEngine.cc:183
#14 aria2::MultiUrlRequestInfo::execute (this=0x556cf56eee10) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/MultiUrlRequestInfo.cc:361
#15 aria2::main (argv=<optimized out>, argc=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/main.cc:78
#16 main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/main.cc:91
```

Condensed backtrace:
```
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007f32adca1b63 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007f32adc552a6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007f32adc287f3 in __GI_abort () at abort.c:79
#4  0x0000556cf4000f18 in std::__replacement_assert (__file=<optimized out>, __line=<optimized out>, __function=<optimized out>, __condition=<optimized out>)
    at /usr/include/c++/11/x86_64-redhat-linux/bits/c++config.h:2660
#5  0x0000556cf4060ae6 in std::array<unsigned char, 4096ul>::operator[] (this=<optimized out>, __n=<optimized out>) at /usr/include/c++/11/array:186
#6  std::array<unsigned char, 4096ul>::operator[] (__n=<optimized out>, this=0x7ffefd6d2f70) at /usr/include/c++/11/array:186
#7  aria2::GZipEncoder::encode[abi:cxx11](unsigned char const*, unsigned long, int) (this=0x7ffefd6d4010, in=<optimized out>, length=<optimized out>, flush=4)
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/GZipEncoder.cc:90
#8  0x0000556cf4060b67 in aria2::GZipEncoder::str[abi:cxx11]() (this=0x7ffefd6d4010) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/GZipEncoder.cc:100
#9  0x0000556cf404a057 in aria2::rpc::toJson (res=..., callback="", gzip=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/RpcResponse.cc:188
#10 0x0000556cf4112e11 in aria2::HttpServerBodyCommand::sendJsonRpcResponse (this=0x556d03102dd0, res=..., callback="")
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/HttpServerBodyCommand.cc:108
#11 0x0000556cf4116b40 in aria2::HttpServerBodyCommand::execute (this=0x556d03102dd0) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/HttpServerBodyCommand.cc:287
#12 0x0000556cf40a6b66 in aria2::(anonymous namespace)::executeCommand (commands=std::deque with 186 elements = {...}, statusFilter=aria2::Command::STATUS_ACTIVE)
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/DownloadEngine.cc:139
#13 0x0000556cf3ffbe21 in aria2::DownloadEngine::run (oneshot=<optimized out>, this=0x556cf56eeee0)
    at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/DownloadEngine.cc:183
#14 aria2::MultiUrlRequestInfo::execute (this=0x556cf56eee10) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/MultiUrlRequestInfo.cc:361
#15 aria2::main (argv=<optimized out>, argc=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/main.cc:78
#16 main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/main.cc:91
```

Comment 1 Lonni J Friedman 2022-08-18 16:06:16 UTC
full backtrace:

(gdb) thread apply all bt full

Thread 1 (Thread 0x7f32ade35980 (LWP 2674422)):
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {__val = {140733150215728, 140733150215712, 140733150211440, 140733150211424, 140733150216208, 93926439977233, 140733150211440, 0, 93926440068608, 93926951160992, 93926951163740, 547, 549, 0, 32, 139855655763501}}
        ret = <optimized out>
#1  0x00007f32adca1b63 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
No locals.
#2  0x00007f32adc552a6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#3  0x00007f32adc287f3 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {93926440077111, 188, 93926440083056, 93926440035797, 1, 140733150211840, 0, 93926469603424, 140733150216112, 0, 4096, 93926951160992, 139855655780153, 93926784911776, 17179869342, 559903}}, sa_flags = 768, sa_restorer = 0x0}
        sigs = {__val = {32, 11938359503587600128, 4051041740889522176, 11938359503587600128, 93926951163496, 140733150211952, 140733150216208, 140733150216112, 4, 4096, 93926691188176, 139855640590895, 206158430248, 140733150211904, 140733150211712, 11938359503587600128}}
#4  0x0000556cf4000f18 in std::__replacement_assert (__file=<optimized out>, __line=<optimized out>, __function=<optimized out>, __condition=<optimized out>) at /usr/include/c++/11/x86_64-redhat-linux/bits/c++config.h:2660
No locals.
#5  0x0000556cf4060ae6 in std::array<unsigned char, 4096ul>::operator[] (this=<optimized out>, __n=<optimized out>) at /usr/include/c++/11/array:186
        __PRETTY_FUNCTION__ = <optimized out>
#6  std::array<unsigned char, 4096ul>::operator[] (__n=<optimized out>, this=0x7ffefd6d2f70) at /usr/include/c++/11/array:186
        __PRETTY_FUNCTION__ = <optimized out>
#7  aria2::GZipEncoder::encode[abi:cxx11](unsigned char const*, unsigned long, int) (this=0x7ffefd6d4010, in=<optimized out>, length=<optimized out>, flush=4) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/GZipEncoder.cc:90
        ret = <optimized out>
        produced = <optimized out>
        out = ""
        outbuf = {_M_elems = "\345]m\217\033\267\256\376/\376\234\070\022%QR\276\065\067iz\200\336\066H\n\364\002IP\350\065\353\033\257\275\260\275m\016\212\376\367K\215=\273#g\355lf\374vq\266ͮmr4\363\220\022EJ\244\374\367h\022Gϟ\362'\243\377]\316g\213\233\060z>\202\061\033=\031-\322\362v\272\032=\177\377\367\310OVy\222\246\261\320@\305$\023\252 \224\310J\005\211,\310\020 \vo=7\322('\255\312<2D\037\320\005EW\b\t\034\270QZ[\351%*\021\205֚\263\250L\222\364\067\a\226\030\343\231\t\351@\030\310\\(\026\263\b\250 c0\022\\4*\240\244\066\263w:g\037u\246\227\345W\216\071k-\242\313"...}
#8  0x0000556cf4060b67 in aria2::GZipEncoder::str[abi:cxx11]() (this=0x7ffefd6d4010) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/GZipEncoder.cc:100
No locals.
#9  0x0000556cf404a057 in aria2::rpc::toJson (res=..., callback="", gzip=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/RpcResponse.cc:188
        o = {strm_ = 0x556cf5db1060, internalBuf_ = "\037\213\b\000\000\000\000\000\000\003"}
#10 0x0000556cf4112e11 in aria2::HttpServerBodyCommand::sendJsonRpcResponse (this=0x556d03102dd0, res=..., callback="") at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/HttpServerBodyCommand.cc:108
        notauthorized = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--
        gzip = <optimized out>
        responseData = <error reading variable: Cannot create a lazy string with address 0x0, and a non-zero length.>
#11 0x0000556cf4116b40 in aria2::HttpServerBodyCommand::execute (this=0x556d03102dd0) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/HttpServerBodyCommand.cc:287
        res = {param = std::unique_ptr<aria2::ValueBase> = {get() = 0x556d205b36f0}, id = std::unique_ptr<aria2::ValueBase> = {get() = 0x556d11f15ee0}, code = 0, authorized = aria2::rpc::RpcResponse::AUTHORIZED}
        callback = ""
        json = std::unique_ptr<aria2::ValueBase> = {get() = 0x556d006528c0}
        error = <optimized out>
        jsondict = <optimized out>
        reqPath = "/jsonrpc"
        query = ""
#12 0x0000556cf40a6b66 in aria2::(anonymous namespace)::executeCommand (commands=std::deque with 186 elements = {...}, statusFilter=aria2::Command::STATUS_ACTIVE) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/DownloadEngine.cc:139
        com = std::unique_ptr<aria2::Command> = {get() = 0x556d03102dd0}
        i = 0
        max = 187
#13 0x0000556cf3ffbe21 in aria2::DownloadEngine::run (oneshot=<optimized out>, this=0x556cf56eeee0) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/DownloadEngine.cc:183
        ghrf = <optimized out>
        ghrf = <optimized out>
#14 aria2::MultiUrlRequestInfo::execute (this=0x556cf56eee10) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/MultiUrlRequestInfo.cc:361
        returnValue = <optimized out>
        returnValue = <optimized out>
        e = <optimized out>
        logger = <optimized out>
#15 aria2::main (argv=<optimized out>, argc=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/main.cc:78
        context = {reqinfo = std::shared_ptr<aria2::MultiUrlRequestInfo> (use count 1, weak count 0) = {get() = 0x556cf56eee10}}
        exitStatus = aria2::error_code::FINISHED
        context = <optimized out>
        exitStatus = <optimized out>
#16 main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/aria2-1.35.0-6.fc35.x86_64/src/main.cc:91
        platform = <optimized out>
        r = <optimized out>

Comment 2 Othman Madjoudj 2022-10-16 14:51:44 UTC
Is this still reproducible with 1.36.0? this issue was reported against 1.35.0

Comment 3 Ben Cotton 2023-04-25 17:47:47 UTC
This message is a reminder that Fedora Linux 36 is nearing its end of life.
Fedora will stop maintaining and issuing updates for Fedora Linux 36 on 2023-05-16.
It is Fedora's policy to close all bug reports from releases that are no longer
maintained. At that time this bug will be closed as EOL if it remains open with a
'version' of '36'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, change the 'version' 
to a later Fedora Linux version. Note that the version field may be hidden.
Click the "Show advanced fields" button if you do not see it.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora Linux 36 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora Linux, you are encouraged to change the 'version' to a later version
prior to this bug being closed.