Skip to content

Instantly share code, notes, and snippets.

@mdouglass
Created June 16, 2021 22:59
Show Gist options
  • Save mdouglass/fe9a159b6d9b167ac1da14386bf773a5 to your computer and use it in GitHub Desktop.
Save mdouglass/fe9a159b6d9b167ac1da14386bf773a5 to your computer and use it in GitHub Desktop.
> server@1.0.0 client
> node client.js
send: reset nghttp2_active_outbound_item
send: aob->item = (nil)
stream: adjusting kept idle streams num_idle_streams=0, max=100
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: end transmission of client magic
send: reset nghttp2_active_outbound_item
send: aob->item = (nil)
send: next frame: payloadlen=0, type=4, flags=0x00, stream_id=0
send: start transmitting frame type=4, length=9
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: end transmission of a frame
send: reset nghttp2_active_outbound_item
send: aob->item = 0x60e00002aac8
stream: dep_add dep_stream(0x61e0000090a8)=0, stream(0x6110000a6808)=1
deflatehd: deflating :scheme: http
deflatehd: name/value match index=5
deflatehd: emit indexed index=5, 1 bytes
deflatehd: deflating :path: /EchoService/DuplexEcho
deflatehd: name match index=3
deflatehd: emit indname index=3, valuelen=23, indexing_mode=1
deflatehd: emit string str=/EchoService/DuplexEcho, length=23, huffman=1, encoded_length=17
deflatehd: deflating :method: POST
deflatehd: name/value match index=2
deflatehd: emit indexed index=2, 1 bytes
deflatehd: deflating :authority: 127.0.0.1:20000
deflatehd: name match index=0
deflatehd: emit indname index=0, valuelen=15, indexing_mode=0
deflatehd: emit string str=127.0.0.1:20000, length=15, huffman=1, encoded_length=11
deflatehd: deflating grpc-accept-encoding: identity,deflate,gzip
deflatehd: emit newname namelen=20, valuelen=21, indexing_mode=0
deflatehd: emit string str=grpc-accept-encoding, length=20, huffman=1, encoded_length=14
deflatehd: emit string str=identity,deflate,gzip, length=21, huffman=1, encoded_length=16
deflatehd: deflating accept-encoding: identity
deflatehd: name match index=15
deflatehd: emit indname index=15, valuelen=8, indexing_mode=0
deflatehd: emit string str=identity, length=8, huffman=1, encoded_length=6
deflatehd: deflating user-agent: grpc-node-js/1.3.2
deflatehd: name match index=57
deflatehd: emit indname index=57, valuelen=18, indexing_mode=0
deflatehd: emit string str=grpc-node-js/1.3.2, length=18, huffman=1, encoded_length=13
deflatehd: deflating content-type: application/grpc
deflatehd: name match index=30
deflatehd: emit indname index=30, valuelen=16, indexing_mode=0
deflatehd: emit string str=application/grpc, length=16, huffman=1, encoded_length=11
deflatehd: deflating te: trailers
deflatehd: emit newname namelen=2, valuelen=8, indexing_mode=0
deflatehd: emit string str=te, length=2, huffman=0, encoded_length=2
deflatehd: emit string str=trailers, length=8, huffman=1, encoded_length=6
deflatehd: all input name/value pairs were deflated
send: HEADERS/PUSH_PROMISE, payloadlen=114
send: before padding, HEADERS serialized in 123 bytes
send: padding selected: payloadlen=114, padlen=0
send: padlen = 0, nothing to do
send: HEADERS finally serialized in 123 bytes
send: next frame: payloadlen=114, type=1, flags=0x04, stream_id=1
send: start transmitting frame type=1, length=123
stream: stream=1 attach item=0x60e00002af28
stream: stream=1 obq push cycle=0
stream: push stream 1 to stream 0
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: end transmission of a frame
send: reset nghttp2_active_outbound_item
send: aob->item = 0x60e00002ae48
send: remote windowsize connection=65535, remote maxframsize=16384, stream(id 1)=65535
send: available window=16384
send: padlen = 0, nothing to do
stream: stream=1 obq resched cycle=416
send: next frame: DATA
send: no copy DATA
send: reset nghttp2_active_outbound_item
send: aob->item = (nil)
send: remote windowsize connection=65509, remote maxframsize=16384, stream(id 1)=65509
send: available window=16384
send: DATA postponed due to Data transfer deferred
stream: stream=1 defer item=0x60e00002af28 cause=08
stream: remove stream 1 from stream 0
send: reset nghttp2_active_outbound_item
send: aob->item = (nil)
send: frame transmission deferred
recv: connection recv_window_size=0, local_window=65535
stream: adjusting kept idle streams num_idle_streams=0, max=100
recv: [IB_READ_FIRST_SETTINGS]
recv: [IB_READ_HEAD]
recv: payloadlen=0, type=4, flags=0x00, stream_id=0
recv: SETTINGS
recv: [IB_READ_SETTINGS]
recv: readlen=0, payloadleft=0
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: next frame: payloadlen=0, type=4, flags=0x01, stream_id=0
send: start transmitting frame type=4, length=9
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: end transmission of a frame
send: reset nghttp2_active_outbound_item
send: aob->item = 0x60e00002b008
recv: connection recv_window_size=0, local_window=65535
stream: adjusting kept idle streams num_idle_streams=0, max=100
recv: [IB_READ_HEAD]
recv: payloadlen=0, type=4, flags=0x01, stream_id=0
recv: SETTINGS
recv: [IB_READ_SETTINGS]
recv: readlen=0, payloadleft=0
recv: [IB_READ_HEAD]
recv: payloadlen=85, type=1, flags=0x04, stream_id=1
recv: HEADERS
recv: no padding in payload
recv: call on_begin_headers callback stream_id=1
recv: [IB_READ_HEADER_BLOCK]
recv: readlen=85, payloadleft=0
recv: block final=1
recv: decoding header block 85 bytes
inflatehd: start state=1
inflatehd: indexed repr
inflatehd: decoded integer is 8
inflatehd: index=8
inflatehd: header emission: :status: 200
recv: proclen=1
inflatehd: start state=2
inflatehd: literal header repr - new name
inflatehd: indexing required=1, no_index=0
inflatehd: huffman encoded=1
inflatehd: decoded integer is 14
inflatehd: 14 bytes read
inflatehd: huffman encoded=1
inflatehd: decoded integer is 6
inflatehd: valuelen=6
inflatehd: 6 bytes read
inflatehd: header emission: grpc-accept-encoding: identity
recv: proclen=23
inflatehd: start state=2
inflatehd: literal header repr - new name
inflatehd: indexing required=1, no_index=0
inflatehd: huffman encoded=1
inflatehd: decoded integer is 10
inflatehd: 10 bytes read
inflatehd: huffman encoded=1
inflatehd: decoded integer is 6
inflatehd: valuelen=6
inflatehd: 6 bytes read
inflatehd: header emission: grpc-encoding: identity
recv: proclen=19
inflatehd: start state=2
inflatehd: literal header repr - indexed name
inflatehd: indexing required=1, no_index=0
inflatehd: decoded integer is 31
inflatehd: index=31
inflatehd: huffman encoded=1
inflatehd: decoded integer is 16
inflatehd: valuelen=16
inflatehd: 16 bytes read
inflatehd: header emission: content-type: application/grpc+proto
recv: proclen=18
inflatehd: start state=2
inflatehd: literal header repr - indexed name
inflatehd: indexing required=1, no_index=0
inflatehd: decoded integer is 33
inflatehd: index=33
inflatehd: huffman encoded=1
inflatehd: decoded integer is 22
inflatehd: valuelen=22
inflatehd: 22 bytes read
inflatehd: header emission: date: Wed, 16 Jun 2021 22:59:29 GMT
recv: proclen=24
inflatehd: start state=2
inflatehd: all input bytes were processed
inflatehd: in_final set
recv: proclen=0
recv: [IB_READ_HEAD]
recv: payloadlen=26, type=0, flags=0x00, stream_id=1
recv: DATA
recv: no padding in payload
recv: [IB_READ_DATA]
recv: readlen=26, payloadleft=0
recv: data_readlen=26
duplexEcho response: { message: 'Hello duplex world!' }
stream: adjusting kept idle streams num_idle_streams=0, max=100
stream: dep_add dep_stream(0x61e0000090a8)=0, stream(0x6110000b7ec8)=3
deflatehd: deflating :scheme: http
deflatehd: name/value match index=5
deflatehd: emit indexed index=5, 1 bytes
deflatehd: deflating :path: /EchoService/UnaryEcho
deflatehd: name match index=3
deflatehd: emit indname index=3, valuelen=22, indexing_mode=1
deflatehd: emit string str=/EchoService/UnaryEcho, length=22, huffman=1, encoded_length=17
deflatehd: deflating :method: POST
deflatehd: name/value match index=2
deflatehd: emit indexed index=2, 1 bytes
deflatehd: deflating :authority: 127.0.0.1:20000
deflatehd: name/value match index=66
deflatehd: emit indexed index=66, 1 bytes
deflatehd: deflating grpc-accept-encoding: identity,deflate,gzip
deflatehd: name/value match index=65
deflatehd: emit indexed index=65, 1 bytes
deflatehd: deflating accept-encoding: identity
deflatehd: name/value match index=64
deflatehd: emit indexed index=64, 1 bytes
deflatehd: deflating user-agent: grpc-node-js/1.3.2
deflatehd: name/value match index=63
deflatehd: emit indexed index=63, 1 bytes
deflatehd: deflating content-type: application/grpc
deflatehd: name/value match index=62
deflatehd: emit indexed index=62, 1 bytes
deflatehd: deflating te: trailers
deflatehd: name/value match index=61
deflatehd: emit indexed index=61, 1 bytes
deflatehd: all input name/value pairs were deflated
send: HEADERS/PUSH_PROMISE, payloadlen=27
send: before padding, HEADERS serialized in 36 bytes
send: padding selected: payloadlen=27, padlen=0
send: padlen = 0, nothing to do
send: HEADERS finally serialized in 36 bytes
send: next frame: payloadlen=27, type=1, flags=0x04, stream_id=3
send: start transmitting frame type=1, length=36
stream: stream=3 attach item=0x60e00002b388
stream: stream=3 obq push cycle=416
stream: push stream 3 to stream 0
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: end transmission of a frame
send: reset nghttp2_active_outbound_item
send: aob->item = 0x60e00002b2a8
send: remote windowsize connection=65509, remote maxframsize=16384, stream(id 3)=65535
send: available window=16384
send: padlen = 0, nothing to do
stream: stream=3 obq resched cycle=816
send: next frame: DATA
send: no copy DATA
stream: stream=3 detach item=0x60e00002b388
stream: remove stream 3 from stream 0
send: reset nghttp2_active_outbound_item
send: aob->item = 0x60e00002b388
recv: connection recv_window_size=26, local_window=65535
stream: adjusting kept idle streams num_idle_streams=0, max=100
recv: [IB_READ_HEAD]
recv: payloadlen=5, type=1, flags=0x04, stream_id=3
recv: HEADERS
recv: no padding in payload
recv: call on_begin_headers callback stream_id=3
recv: [IB_READ_HEADER_BLOCK]
recv: readlen=5, payloadleft=0
recv: block final=1
recv: decoding header block 5 bytes
inflatehd: start state=1
inflatehd: indexed repr
inflatehd: decoded integer is 8
inflatehd: index=8
inflatehd: header emission: :status: 200
recv: proclen=1
inflatehd: start state=2
inflatehd: indexed repr
inflatehd: decoded integer is 65
inflatehd: index=65
inflatehd: header emission: grpc-accept-encoding: identity
recv: proclen=1
inflatehd: start state=2
inflatehd: indexed repr
inflatehd: decoded integer is 64
inflatehd: index=64
inflatehd: header emission: grpc-encoding: identity
recv: proclen=1
inflatehd: start state=2
inflatehd: indexed repr
inflatehd: decoded integer is 63
inflatehd: index=63
inflatehd: header emission: content-type: application/grpc+proto
recv: proclen=1
inflatehd: start state=2
inflatehd: indexed repr
inflatehd: decoded integer is 62
inflatehd: index=62
inflatehd: header emission: date: Wed, 16 Jun 2021 22:59:29 GMT
recv: proclen=1
inflatehd: start state=2
inflatehd: all input bytes were processed
inflatehd: in_final set
recv: proclen=0
recv: [IB_READ_HEAD]
recv: payloadlen=25, type=0, flags=0x00, stream_id=3
recv: DATA
recv: no padding in payload
recv: [IB_READ_DATA]
recv: readlen=25, payloadleft=0
recv: data_readlen=25
stream: adjusting kept idle streams num_idle_streams=0, max=100
recv: connection recv_window_size=51, local_window=65535
stream: adjusting kept idle streams num_idle_streams=0, max=100
recv: [IB_READ_HEAD]
recv: payloadlen=26, type=1, flags=0x05, stream_id=3
recv: HEADERS
recv: no padding in payload
recv: call on_begin_headers callback stream_id=3
recv: [IB_READ_HEADER_BLOCK]
recv: readlen=26, payloadleft=0
recv: block final=1
recv: decoding header block 26 bytes
inflatehd: start state=1
inflatehd: literal header repr - new name
inflatehd: indexing required=1, no_index=0
inflatehd: huffman encoded=1
inflatehd: decoded integer is 8
inflatehd: 8 bytes read
inflatehd: huffman encoded=0
inflatehd: decoded integer is 1
inflatehd: valuelen=1
inflatehd: 1 bytes read
inflatehd: header emission: grpc-status: 0
recv: proclen=12
inflatehd: start state=2
inflatehd: literal header repr - new name
inflatehd: indexing required=1, no_index=0
inflatehd: huffman encoded=1
inflatehd: decoded integer is 9
inflatehd: 9 bytes read
inflatehd: huffman encoded=0
inflatehd: decoded integer is 2
inflatehd: valuelen=2
inflatehd: 2 bytes read
inflatehd: header emission: grpc-message: OK
recv: proclen=14
inflatehd: start state=2
inflatehd: all input bytes were processed
inflatehd: in_final set
recv: proclen=0
stream: adjusting kept idle streams num_idle_streams=0, max=100
stream: stream(0x6110000b7ec8)=3 close
unaryEcho response: { message: 'Hello unary world!' }
calling stream.cancel
stream: stream=1 resume item=0x60e00002af28 flags=08
stream: stream=1 obq push cycle=416
stream: push stream 1 to stream 0
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: next frame: payloadlen=4, type=3, flags=0x00, stream_id=3
send: start transmitting frame type=3, length=13
stream: stream(0x6110000b7ec8)=3 close
stream: destroy closed stream(0x6110000b7ec8)=3
stream: dep_remove stream(0x6110000b7ec8)=3
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: end transmission of a frame
send: reset nghttp2_active_outbound_item
send: aob->item = 0x60e00002b468
send: remote windowsize connection=65484, remote maxframsize=16384, stream(id 1)=65509
send: available window=16384
send: padlen = 0, nothing to do
stream: stream=1 obq resched cycle=416
send: next frame: DATA
send: start transmitting frame type=0, length=9
stream: stream=1 detach item=0x60e00002af28
stream: remove stream 1 from stream 0
stream: adjusting kept idle streams num_idle_streams=0, max=100
send: end transmission of a frame
send: reset nghttp2_active_outbound_item
send: aob->item = 0x60e00002af28
returned from stream.cancel
calling sleep
duplexEcho error Error: 1 CANCELLED: Cancelled on client
at Object.callErrorFromStatus (/home/matthew/spikes/repro-node-crash/node_modules/@grpc/grpc-js/build/src/call.js:31:26)
at Object.onReceiveStatus (/home/matthew/spikes/repro-node-crash/node_modules/@grpc/grpc-js/build/src/client.js:390:49)
at Object.onReceiveStatus (/home/matthew/spikes/repro-node-crash/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:299:181)
at /home/matthew/spikes/repro-node-crash/node_modules/@grpc/grpc-js/build/src/call-stream.js:145:78
at processTicksAndRejections (node:internal/process/task_queues:78:11)
duplexEcho status {
code: 1,
details: 'Cancelled on client',
metadata: Metadata { internalRepr: Map(0) {}, options: {} }
}
=================================================================
==2831257==ERROR: AddressSanitizer: heap-use-after-free on address 0x6110000b7fb4 at pc 0x0000062930ed bp 0x7fff2d688f20 sp 0x7fff2d688f18
READ of size 1 at 0x6110000b7fb4 thread T0
#0 0x62930ec in nghttp2_session_close_stream ../deps/nghttp2/lib/nghttp2_session.c:1218
#1 0x629423c in nghttp2_session_close_stream_if_shut_rdwr ../deps/nghttp2/lib/nghttp2_session.c:1442
#2 0x629c30b in session_end_stream_headers_received ../deps/nghttp2/lib/nghttp2_session.c:3738
#3 0x629c937 in session_after_header_block_received ../deps/nghttp2/lib/nghttp2_session.c:3826
#4 0x62a7ad2 in nghttp2_session_mem_recv ../deps/nghttp2/lib/nghttp2_session.c:6277
#5 0x140f19d in node::http2::Http2Session::ConsumeHTTP2Data() ../src/node_http2.cc:798
#6 0x1418f2c in node::http2::Http2Session::OnStreamRead(long, uv_buf_t const&) ../src/node_http2.cc:1883
#7 0x12375c4 in node::StreamResource::EmitRead(long, uv_buf_t const&) ../src/stream_base-inl.h:104
#8 0x1720366 in node::LibuvStreamWrap::OnUvRead(long, uv_buf_t const*) ../src/stream_wrap.cc:276
#9 0x171fb08 in operator() ../src/stream_wrap.cc:198
#10 0x171fb38 in _FUN ../src/stream_wrap.cc:199
#11 0x523b8c5 in uv__read ../deps/uv/src/unix/stream.c:1239
#12 0x523bfa9 in uv__stream_io ../deps/uv/src/unix/stream.c:1306
#13 0x524e7d7 in uv__io_poll ../deps/uv/src/unix/linux-core.c:462
#14 0x520c612 in uv_run ../deps/uv/src/unix/core.c:385
#15 0x107ae80 in node::SpinEventLoop(node::Environment*) ../src/api/embed_helpers.cc:36
#16 0x14ca670 in node::NodeMainInstance::Run(node::EnvSerializeInfo const*) ../src/node_main_instance.cc:143
#17 0x12aa567 in node::Start(int, char**) ../src/node.cc:1125
#18 0x5e68beb in main ../src/node_main.cc:127
#19 0x7f2dbc7abb74 in __libc_start_main (/lib64/libc.so.6+0x27b74)
#20 0x106d18d in _start (/home/matthew/projects/node/out/Debug/node+0x106d18d)
0x6110000b7fb4 is located 244 bytes inside of 248-byte region [0x6110000b7ec0,0x6110000b7fb8)
freed by thread T0 here:
#0 0x7f2dbcda9647 in free (/lib64/libasan.so.6+0xae647)
#1 0x109046d in char* node::UncheckedRealloc<char>(char*, unsigned long) ../src/util-inl.h:337
#2 0x1488639 in node::mem::NgLibMemoryManager<node::http2::Http2Session, nghttp2_mem>::ReallocImpl(void*, unsigned long, void*) (/home/matthew/projects/node/out/Debug/node+0x1488639)
#3 0x14884e0 in node::mem::NgLibMemoryManager<node::http2::Http2Session, nghttp2_mem>::FreeImpl(void*, void*) (/home/matthew/projects/node/out/Debug/node+0x14884e0)
#4 0x62ced75 in nghttp2_mem_free ../deps/nghttp2/lib/nghttp2_mem.c:61
#5 0x6293422 in nghttp2_session_destroy_stream ../deps/nghttp2/lib/nghttp2_session.c:1268
#6 0x6293304 in nghttp2_session_close_stream ../deps/nghttp2/lib/nghttp2_session.c:1241
#7 0x6298457 in session_after_frame_sent1 ../deps/nghttp2/lib/nghttp2_session.c:2712
#8 0x629a04e in nghttp2_session_mem_send ../deps/nghttp2/lib/nghttp2_session.c:3235
#9 0x1417478 in node::http2::Http2Session::SendPendingData() ../src/node_http2.cc:1687
#10 0x141d1a1 in node::http2::Http2Stream::SubmitRstStream(unsigned int) ../src/node_http2.cc:2202
#11 0x14239e1 in node::http2::Http2Stream::RstStream(v8::FunctionCallbackInfo<v8::Value> const&) ../src/node_http2.cc:2687
#12 0x1d5f547 in v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo) ../deps/v8/src/api/api-arguments-inl.h:158
#13 0x1d6445b in HandleApiCallHelper<false> ../deps/v8/src/builtins/builtins-api.cc:113
#14 0x1d73c68 in Builtin_Impl_HandleApiCall ../deps/v8/src/builtins/builtins-api.cc:143
#15 0x1d75e81 in v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) ../deps/v8/src/builtins/builtins-api.cc:131
#16 0x55081df in Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_BuiltinExit (/home/matthew/projects/node/out/Debug/node+0x55081df)
#17 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#18 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#19 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#20 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#21 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#22 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#23 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#24 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#25 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#26 0x5283b64 in Builtins_InterpreterEntryTrampoline (/home/matthew/projects/node/out/Debug/node+0x5283b64)
#27 0x537acda in Builtins_AsyncFunctionAwaitResolveClosure (/home/matthew/projects/node/out/Debug/node+0x537acda)
#28 0x56b2fc3 in Builtins_PromiseFulfillReactionJob (/home/matthew/projects/node/out/Debug/node+0x56b2fc3)
#29 0x5326cf3 in Builtins_RunMicrotasks (/home/matthew/projects/node/out/Debug/node+0x5326cf3)
previously allocated by thread T0 here:
#0 0x7f2dbcda9cb8 in __interceptor_realloc (/lib64/libasan.so.6+0xaecb8)
#1 0x1090487 in char* node::UncheckedRealloc<char>(char*, unsigned long) ../src/util-inl.h:341
#2 0x1488639 in node::mem::NgLibMemoryManager<node::http2::Http2Session, nghttp2_mem>::ReallocImpl(void*, unsigned long, void*) (/home/matthew/projects/node/out/Debug/node+0x1488639)
#3 0x14884b2 in node::mem::NgLibMemoryManager<node::http2::Http2Session, nghttp2_mem>::MallocImpl(unsigned long, void*) (/home/matthew/projects/node/out/Debug/node+0x14884b2)
#4 0x62ced02 in nghttp2_mem_malloc ../deps/nghttp2/lib/nghttp2_mem.c:57
#5 0x6292734 in nghttp2_session_open_stream ../deps/nghttp2/lib/nghttp2_session.c:1051
#6 0x6295d0e in session_prep_frame ../deps/nghttp2/lib/nghttp2_session.c:2101
#7 0x6298efd in nghttp2_session_mem_send_internal ../deps/nghttp2/lib/nghttp2_session.c:2932
#8 0x6299ff7 in nghttp2_session_mem_send ../deps/nghttp2/lib/nghttp2_session.c:3225
#9 0x1417478 in node::http2::Http2Session::SendPendingData() ../src/node_http2.cc:1687
#10 0x140f573 in node::http2::Http2Session::ConsumeHTTP2Data() ../src/node_http2.cc:827
#11 0x1418f2c in node::http2::Http2Session::OnStreamRead(long, uv_buf_t const&) ../src/node_http2.cc:1883
#12 0x12375c4 in node::StreamResource::EmitRead(long, uv_buf_t const&) ../src/stream_base-inl.h:104
#13 0x1720366 in node::LibuvStreamWrap::OnUvRead(long, uv_buf_t const*) ../src/stream_wrap.cc:276
#14 0x171fb08 in operator() ../src/stream_wrap.cc:198
#15 0x171fb38 in _FUN ../src/stream_wrap.cc:199
#16 0x523b8c5 in uv__read ../deps/uv/src/unix/stream.c:1239
#17 0x523bfa9 in uv__stream_io ../deps/uv/src/unix/stream.c:1306
#18 0x524e7d7 in uv__io_poll ../deps/uv/src/unix/linux-core.c:462
#19 0x520c612 in uv_run ../deps/uv/src/unix/core.c:385
#20 0x107ae80 in node::SpinEventLoop(node::Environment*) ../src/api/embed_helpers.cc:36
#21 0x14ca670 in node::NodeMainInstance::Run(node::EnvSerializeInfo const*) ../src/node_main_instance.cc:143
#22 0x12aa567 in node::Start(int, char**) ../src/node.cc:1125
#23 0x5e68beb in main ../src/node_main.cc:127
#24 0x7f2dbc7abb74 in __libc_start_main (/lib64/libc.so.6+0x27b74)
SUMMARY: AddressSanitizer: heap-use-after-free ../deps/nghttp2/lib/nghttp2_session.c:1218 in nghttp2_session_close_stream
Shadow bytes around the buggy address:
0x0c228000efa0: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
0x0c228000efb0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c228000efc0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c228000efd0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c228000efe0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c228000eff0: fd fd fd fd fd fd[fd]fa fa fa fa fa fa fa fa fa
0x0c228000f000: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c228000f010: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c228000f020: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x0c228000f030: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c228000f040: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==2831257==ABORTING
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment