kenballus opened a new issue, #10116:
URL: https://github.com/apache/trafficserver/issues/10116

   # Description
   ATS, when configured with `attach_server_session_to_client`, segfaults when 
forwarding a request to a Puma backend.
   
   # Steps to reproduce
   0. Start a fresh Debian system.
   ```bash
   docker --workdir /repro -it debian:bookworm
   ```
   1. Install ATS dependencies.
   ```bash
   apt -y update && apt -y upgrade && apt -y install make autoconf automake 
libtool pkg-config gcc g++ zlib1g-dev libssl-dev libpcre3-dev libcap-dev 
libhwloc-dev libncurses5-dev libcurl4-openssl-dev flex libunwind-dev git
   ```
   2. Build and install ATS `master`. (The current commit at time of writing is 
`e6182d9ac9c3f611cb33b3ef6dc98327df41c3d6`)
   ```bash
   git clone "https://github.com/apache/trafficserver"; && cd trafficserver && 
autoreconf -if && ./configure --enable-debug && make -j$(nproc) && make install
   ```
   3. Install Puma dependencies.
   ```bash
   apt -y install ruby-dev && gem install sinatra --version 3.0.6
   ```
   4. Install Puma.
   ```bash
   gem install puma --version 6.3.0
   ```
   5. Copy the files in the "Files" section (below) into the filesystem.
   6. Start the Puma server.
   ```bash
   ruby /repro/server.rb &
   ```
   7. Start ATS.
   ```bash
   traffic_server &
   ```
   8. Install netcat.
   ```bash
   apt -y install netcat-traditional
   ```
   9. Use netcat to send ATS an HTTP request with a short client-side timeout.
   ```bash
   printf 'GET / HTTP/1.1\r\n\r\n' | nc -q 1 localhost 80
   ```
   10. Observe that ATS segfaults and crashes with the following output:
   ```
   [Jul 31 16:31:00.644] traffic_crashlo NOTE: crashlog started, target=35696, 
debug=false syslog=true, uid=65534 euid=0
   [Jul 31 16:31:00.645] traffic_crashlo NOTE: logging to 0x564faa1de830
   [Jul 31 16:31:00.645] traffic_crashlo NOTE: readlink failed with Permission 
denied
   [Jul 31 16:31:00.645] traffic_crashlo ERROR: wrote crash log to 
/usr/local/var/log/trafficserver/crash-2023-07-31-163100.log
   traffic_server: received signal 11 (Segmentation fault)
   traffic_server - STACK TRACE:
   traffic_server(_Z19crash_logger_invokeiP9siginfo_tPv+0xc5)[0x564195bcfecb]
   /lib/x86_64-linux-gnu/libc.so.6(+0x3bfd0)[0x7fda33fd6fd0]
   traffic_server(_ZN18Http1ClientSession11do_io_closeEi+0xce)[0x564195c7a1a4]
   
traffic_server(_ZN18Http1ClientSession16state_keep_aliveEiPv+0x3b4)[0x564195c7b424]
   traffic_server(_ZN12Continuation11handleEventEiPv+0xe7)[0x564195bd96f3]
   traffic_server(+0x97da01)[0x564196051a01]
   traffic_server(+0x97e631)[0x564196052631]
   traffic_server(+0x97ed0c)[0x564196052d0c]
   
traffic_server(_ZN18UnixNetVConnection11net_read_ioEP10NetHandlerP7EThread+0x2b)[0x5641960556b9]
   traffic_server(_ZN10NetHandler18process_ready_listEv+0x9b)[0x564196088793]
   traffic_server(_ZN10NetHandler15waitForActivityEl+0x16d)[0x564196088b47]
   traffic_server(_ZN7EThread15execute_regularEv+0x499)[0x5641960c8a95]
   traffic_server(_ZN7EThread7executeEv+0x10b)[0x5641960c8c3f]
   traffic_server(+0x9f341c)[0x5641960c741c]
   /lib/x86_64-linux-gnu/libc.so.6(+0x89044)[0x7fda34024044]
   /lib/x86_64-linux-gnu/libc.so.6(__clone+0x40)[0x7fda340a3860]
   [2]+  Segmentation fault      (core dumped) traffic_server
   ```
   
   # Files
   ## `/usr/local/etc/trafficserver/records.yaml`
   ```yaml
   ts:
     http:
       server_ports: 80 80:ipv6
       attach_server_session_to_client: 1
   ```
   ## `/usr/local/etc/trafficserver/remap.config`
   ```
   map / http://127.0.0.1:8000
   ```
   ## `/repro/server.rb`
   ```ruby
   require 'sinatra/base'
   require 'rack/handler/puma'
   
   class App < Sinatra::Base
     get '*' do
       ""
     end
   end
   
   Rack::Handler::Puma.run(App.new, Port: 8000)
   ```
   
   # Crash log
   ```
   Process:            [TS_MAIN] [35696]
   Version:            Traffic Server 10.0.0
   System Version:     Linux x86_64 #1 SMP PREEMPT_DYNAMIC Sat, 15 Jul 2023 
19:25:49 +0000 6.4.3-arch1-2
   Date:               Mon, 31 Jul 2023 16:31:00 +0000
   
   No target signal information
   
   No target CPU registers
   
   Process Status:
   Name: [TS_MAIN]
   Umask:  0022
   State:  S (sleeping)
   Tgid: 35696
   Ngid: 0
   Pid:  35696
   PPid: 1
   TracerPid:  0
   Uid:  65534 65534 65534 65534
   Gid:  65534 65534 65534 65534
   FDSize: 256
   Groups: 65534
   NStgid: 35696
   NSpid:  35696
   NSpgid: 35696
   NSsid:  1
   Kthread:  0
   VmPeak:  3154692 kB
   VmSize:  3092708 kB
   VmLck:         0 kB
   VmPin:         0 kB
   VmHWM:    112092 kB
   VmRSS:    112092 kB
   RssAnon:     90844 kB
   RssFile:     21248 kB
   RssShmem:        0 kB
   VmData:   150592 kB
   VmStk:       132 kB
   VmExe:      5540 kB
   VmLib:     10508 kB
   VmPTE:       560 kB
   VmSwap:        0 kB
   HugetlbPages:        0 kB
   CoreDumping:  0
   THP_enabled:  1
   untag_mask: 0xffffffffffffffff
   Threads:  48
   SigQ: 0/579165
   SigPnd: 0000000000000000
   ShdPnd: 0000000000000000
   SigBlk: 0000000000000000
   SigIgn: 0000000000001001
   SigCgt: 0000000100004efe
   CapInh: 0000000000000000
   CapPrm: 000000000000040a
   CapEff: 0000000000000400
   CapBnd: 00000000a80425fb
   CapAmb: 0000000000000000
   NoNewPrivs: 0
   Seccomp:  2
   Seccomp_filters:  1
   Speculation_Store_Bypass: thread vulnerable
   SpeculationIndirectBranch:  conditional enabled
   Cpus_allowed: ffffffff
   Cpus_allowed_list:  0-31
   Mems_allowed: 00000003
   Mems_allowed_list:  0-1
   voluntary_ctxt_switches:  41
   nonvoluntary_ctxt_switches: 33
   
   Process Limits:
   Limit                     Soft Limit           Hard Limit           Units
   Max cpu time              unlimited            unlimited            seconds
   Max file size             unlimited            unlimited            bytes
   Max data size             unlimited            unlimited            bytes
   Max stack size            unlimited            unlimited            bytes
   Max core file size        unlimited            unlimited            bytes
   Max resident set          unlimited            unlimited            bytes
   Max processes             unlimited            unlimited            processes
   Max open files            1073741816           1073741816           files
   Max locked memory         8388608              8388608              bytes
   Max address space         unlimited            unlimited            bytes
   Max file locks            unlimited            unlimited            locks
   Max pending signals       579165               579165               signals
   Max msgqueue size         819200               819200               bytes
   Max nice priority         0                    0
   Max realtime priority     0                    0
   Max realtime timeout      unlimited            unlimited            us
   ```
   
   # Versions
   ATS: master branch, commit `e6182d9ac9c3f611cb33b3ef6dc98327df41c3d6`
   OS: Debian Bookworm container running on top of Arch Linux with a 6.4.3 
kernel
   All other versions are either Debian defaults or specified in the 
reproduction steps.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to