drogon icon indicating copy to clipboard operation
drogon copied to clipboard

Thread n "DrogonIoLoop" received signal SIGPIPE, Broken pipe

Open prothegee opened this issue 1 year ago • 0 comments

Thread n "DrogonIoLoop" received signal SIGPIPE, Broken pipe


error brief

Hello, everyone

I got an error from debug console (vscode)

[New Thread 0x7ffff61fd6c0 (LWP 67497)]
[New Thread 0x7ffff59fc6c0 (LWP 67498)]
[New Thread 0x7ffff51fb6c0 (LWP 67499)]
[New Thread 0x7fffeffff6c0 (LWP 67501)]

Thread 4 "DrogonIoLoop" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x7ffff51fb6c0 (LWP 67499)]
0x00007ffff73b26fa in __GI_sendfile64 () at ../sysdeps/unix/syscall-template.S:120

and exception stop at here from trantor

ssize_t TcpConnectionImpl::sendNodeInLoop(const BufferNodePtr &nodePtr)
{
    loop_->assertInLoopThread();
#ifdef __linux__
    if (nodePtr->isFile() && !tlsProviderPtr_)
    {
        static const long long kMaxSendBytes = 0x7ffff000;
        LOG_TRACE << "send file in loop using linux kernel sendfile()";
        auto toSend = nodePtr->remainingBytes();
        if (toSend <= 0)
        {
            LOG_ERROR << "0 or negative bytes to send";
            return -1;
        } 
        auto bytesSent =
            sendfile(socketPtr_->fd(),
    /* reset of the code*/
}

mostly this happen when sub1.domain.tld page get files from sub2.domain.tld after a certain ammount of request


a log info

20240724 19:23:15.301471 UTC 46085 FATAL no writing but write callback called - TcpConnectionImpl.cc:255
20240724 19:42:02.638646 UTC 46086 FATAL Transport endpoint is not connected (errno=107) sockets::shutdownWrite - Socket.cc:110
20240724 19:42:02.643259 UTC 46086 FATAL Transport endpoint is not connected (errno=107) sockets::shutdownWrite - Socket.cc:110
20240724 23:50:38.747832 UTC 140777 WARN  SIGINT signal received. - HttpAppFrameworkImpl.cc:177



extra information

operating system:

OS: Debian GNU/Linux 12 (bookworm) on Windows 10 x86_64
Kernel: 5.15.153.1-microsoft-standard-WSL2

hardwares:

  • CPU: 12 threads
  • RAM: 32 GiB

drogon version:

     _
  __| |_ __ ___   __ _  ___  _ __
 / _` | '__/ _ \ / _` |/ _ \| '_ \
| (_| | | | (_) | (_| | (_) | | | |
 \__,_|_|  \___/ \__, |\___/|_| |_|
                 |___/

A utility for drogon
Version: 1.9.6
Git commit: e78690747858f49d7ea08002083420ff046d8785
Compilation:
  Compiler: c++
  Compiler ID: GNU
  Compilation flags: -g -std=c++20 -I/usr/include/jsoncpp -I/usr/local/include
Libraries:
  postgresql: yes  (pipeline mode: yes)
  mariadb: no
  sqlite3: yes
  ssl/tls backend: OpenSSL
  brotli: yes
  hiredis: no
  c-ares: yes
  yaml-cpp: no

installed packages version:

g++             (Debian 12.2.0-14) 12.2.0
gcc             (Debian 12.2.0-14) 12.2.0
libssl-dev      3.0.13-1~deb12u1
libpq-dev       15.7-0+deb12u1
libbrotli-dev   1.0.9-2+b6
libc-ares-dev   1.18.1-3
ninja-build     1.11.1-1
gdb             13.1-3

example code to reproduce

# command usage
cmake -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-std=c++20 -fcoroutines"

anyway, I'm not really sure when

// ...
"run_as_daemon": true,
"relaunch_on_error": true,
// ...

because currently this debug mode always set to false

this is the first time this exception appear on my time when using drogon framework


not sure how many to time make it appear when make the request,

but try to refresh browser as fast as you can when try this,

and also when using drogon_ctl press, there only a few error/fail on 100,000 request but without exception/crash.


I want to try mimic public media guards at least using origin whitelist, it is drive like in a nutshell



end of - Thread n "DrogonIoLoop" received signal SIGPIPE, Broken pipe

prothegee avatar Jul 29 '24 19:07 prothegee