Skip to content

Conversation

@brbzull0
Copy link
Contributor

While doing some tests with different initial_max_streams_* configuration I found out that when increasing the streams using h2load ATS crashes as the requested stream is not created. This PR follows the same logic as read_ready and creates the stream if needed.

Crash:

Thread 4 "[ET_NET 1]" received signal SIGSEGV, Segmentation fault.                                                                                            
[Switching to Thread 0x7ffff41df700 (LWP 965501)]                                                                                                             
0x0000555555ef0872 in QUICStreamImpl::send_data (this=0x0, quiche_con=0x7fff8cba7e50) at QUICStream_quiche.cc:78                                              
78        len = quiche_conn_stream_capacity(quiche_con, this->_id);                                                                                           
(gdb) bt                                                                                                                                                      
#0  0x0000555555ef0872 in QUICStreamImpl::send_data (this=0x0, quiche_con=0x7fff8cba7e50) at QUICStream_quiche.cc:78                                          
#1  0x0000555555e4a3b4 in QUICNetVConnection::_handle_write_ready (this=0x7fff8c5b3ca0) at QUICNetVConnection_quiche.cc:544
#2  0x0000555555e489c1 in QUICNetVConnection::state_established (this=0x7fff8c5b3ca0, event=2501, data=0x7fffde2f8040) at QUICNetVConnection_quiche.cc:168
#3  0x00005555559c31a7 in Continuation::handleEvent (this=0x7fff8c5b3ca0, event=2501, data=0x7fffde2f8040)
    at /home/dmeden/code/git/trafficserver/iocore/eventsystem/I_Continuation.h:228
#4  0x0000555555ef8103 in EThread::process_event (this=0x555556616650, e=0x7fffde2f8040, calling_code=2501) at UnixEThread.cc:150
#5  0x0000555555ef876c in EThread::execute_regular (this=0x555556616650) at UnixEThread.cc:256
#6  0x0000555555ef8a8a in EThread::execute (this=0x555556616650) at UnixEThread.cc:335
#7  0x0000555555ef71a6 in spawn_thread_internal (a=0x5555564d11d0) at Thread.cc:79
#8  0x00007ffff76e6609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#9  0x00007ffff7038133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95


(gdb) f 1
#1  0x0000555555e4a3b4 in QUICNetVConnection::_handle_write_ready (this=0x7fff8c5b3ca0) at QUICNetVConnection_quiche.cc:544
544           stream->send_data(this->_quiche_con);
(gdb) p s
$5 = 4232
(gdb) p stream
$6 = (QUICStreamImpl *) 0x0

@brbzull0 brbzull0 added the QUIC label Feb 17, 2023
@brbzull0 brbzull0 added this to the 10.0.0 milestone Feb 17, 2023
@brbzull0 brbzull0 requested a review from maskit February 17, 2023 14:53
@brbzull0 brbzull0 self-assigned this Feb 17, 2023
@brbzull0 brbzull0 merged commit ead31cc into apache:master Feb 17, 2023
cmcfarlen pushed a commit to cmcfarlen/trafficserver that referenced this pull request Jun 3, 2024
* asf/master: (49 commits)
  Cleanup: removing some traffic_manager leftovers. (apache#9425)
  records.yaml - Add support to load multiple YAML docs from the same file and let traffic_ctl to modify a records.yaml file (apache#9404)
  QUIC-quiche: Use configured disable_active_migration param at quiche transport configuration. (apache#9447)
  records.yaml: Make sure we fail if we found a legacy records.config file. (apache#9435)
  Use TSDbg in webp_transform plugin (apache#9439)
  quic: make sure we create a stream if none available. (apache#9436)
  Fixes comparison with the wrong type (apache#9441)
  On arm64 macOS, do not use pagezero linker flag when using luajit (apache#9430)
  tscore: Remove unneeded and mispelled libswoc reference. (apache#9429)
  Remove UDP_stubs.h (apache#9413)
  Make jsonrcp restricted_api false by default. (apache#9415)
  Histogram: rename members because Zwoop. (apache#9417)
  FileManager string update (apache#9416)
  P_SSLUtils.h include updates (apache#9414)
  libswoc: update build support to fix issues with 10-Dev merge. (apache#9397)
  QUIC: Remove hardcoded quiche set_initial_max_streams and use config values instead. (apache#9412)
  Fixes the compile to work with LLVM15 (apache#9410)
  update cmake for rpc and swoc (apache#9409)
  Removes the UglyStub file (apache#9401)
  TSan: Make Thread::cur_time thread local (apache#9184)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants