[
https://issues.apache.org/jira/browse/TS-4013?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14999941#comment-14999941
]
James Peach commented on TS-4013:
---------------------------------
Ick. We are checking whether to emit a newline but need to check the length of
the format string not the length of the printed string. As an aside, the buffer
management in {{Diags::print_va}} worries me.
> coredump in diag debug
> ----------------------
>
> Key: TS-4013
> URL: https://issues.apache.org/jira/browse/TS-4013
> Project: Traffic Server
> Issue Type: Bug
> Reporter: Masakazu Kitajo
>
> coredump under h2spec test if diag debug is enabled.
> {noformat}
> CONFIG proxy.config.diags.debug.enabled INT 1
> CONFIG proxy.config.diags.debug.tags STRING http.*
> {noformat}
> {noformat}
> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFATAL:
> Diags.cc:61: failed assert `nbytes < Size`
> Process 39186 stopped
> * thread #2: tid = 0x53dc08, 0x00007fff89b36286
> libsystem_kernel.dylib`__pthread_kill + 10, name = '[ET_NET 4]', stop reason
> = signal SIGABRT
> frame #0: 0x00007fff89b36286 libsystem_kernel.dylib`__pthread_kill + 10
> libsystem_kernel.dylib`__pthread_kill:
> -> 0x7fff89b36286 <+10>: jae 0x7fff89b36290 ; <+20>
> 0x7fff89b36288 <+12>: movq %rax, %rdi
> 0x7fff89b3628b <+15>: jmp 0x7fff89b31c53 ; cerror_nocancel
> 0x7fff89b36290 <+20>: retq
> (lldb) bt
> * thread #2: tid = 0x53dc08, 0x00007fff89b36286
> libsystem_kernel.dylib`__pthread_kill + 10, name = '[ET_NET 4]', stop reason
> = signal SIGABRT
> * frame #0: 0x00007fff89b36286 libsystem_kernel.dylib`__pthread_kill + 10
> frame #1: 0x00007fff91c249f9 libsystem_pthread.dylib`pthread_kill + 90
> frame #2: 0x00007fff87e199b3 libsystem_c.dylib`abort + 129
> frame #3: 0x000000000003a119 libtsutil.6.dylib`ink_die_die_die() + 9 at
> ink_error.cc:43
> frame #4: 0x000000000003a106 libtsutil.6.dylib`ink_fatal_va(fmt="%s:%d:
> failed assert `%s`", ap=0x00000000b048a7b0) + 198 at ink_error.cc:65
> frame #5: 0x000000000003a279
> libtsutil.6.dylib`ink_fatal(message_format="%s:%d: failed assert `%s`") + 345
> at ink_error.cc:73
> frame #6: 0x0000000000037e6f
> libtsutil.6.dylib`::_ink_assert(expression="nbytes < Size", file="Diags.cc",
> line=61) + 47 at ink_assert.cc:37
> frame #7: 0x000000000001c4db libtsutil.6.dylib`void
> vprintline<1024>(fp=0x00007fff775573f0, buffer=<no value available>,
> ap=0x00000000b048b100) [1024], __va_list_tag*) + 139 at Diags.cc:61
> frame #8: 0x000000000001c19b
> libtsutil.6.dylib`Diags::print_va(this=0x00000000007002d0,
> debug_tag="http2_hpack_decode", diags_level=DL_Debug, loc=0x00000000b048bc20,
> format_string="Decoded field: %s: %s", ap=0x00000000b048bc70) const + 1995 at
> Diags.cc:351
> frame #9: 0x000000000001ca7a
> libtsutil.6.dylib`Diags::log(this=0x00000000007002d0,
> tag="http2_hpack_decode", level=DL_Debug, file="HPACK.cc",
> func="decode_literal_header_field", line=665, format_string="Decoded field:
> %s: %s") const + 458 at Diags.cc:551
> frame #10: 0x0000000100199746
> traffic_server`decode_literal_header_field(header=0x00000000b048be30,
> buf_start="", buf_end="", dynamic_table=0x0000000004f03b00) + 1222 at
> HPACK.cc:664
> frame #11: 0x000000010019b6d2
> traffic_server`http2_decode_header_blocks(hdr=0x0000000005854790,
> buf_start="\x82\x87\x84A\x8a\b\x9d\\\v\x81p?y?\x99", buf_end="",
> dynamic_table=0x0000000004f03b00) + 322 at HTTP2.cc:607
> frame #12: 0x00000001001a6255
> traffic_server`Http2Stream::decode_header_blocks(this=0x0000000005854740,
> dynamic_table=0x0000000004f03b00) + 69 at Http2Stream.h:97
> frame #13: 0x00000001001a55d1
> traffic_server`rcv_continuation_frame(cs=0x0000000005024b50,
> cstate=0x0000000005024db8, frame=0x00000000b048c230) + 945 at
> Http2ConnectionState.cc:649
> {noformat}
> {noformat}
> 5.1. Stream States
> ✓ idle: Sends a DATA frame
> ✓ idle: Sends a RST_STREAM frame
> ✓ idle: Sends a WINDOW_UPDATE frame
> ✓ idle: Sends a CONTINUATION frame
> ✓ half closed (remote): Sends a DATA frame
> ✓ half closed (remote): Sends a HEADERS frame
> ✓ half closed (remote): Sends a CONTINUATION frame
> × closed: Sends a CONTINUATION frame
> - The endpoint MUST treat this as a stream error (Section 5.4.2) of
> type STREAM_CLOSED.
> Expected: Stream close
> Actual: Test timeout
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)