Conan Wang created TS-1506:
------------------------------
Summary: %<cquuh> log symbol will crash TS when requesting a SSL
url.
Key: TS-1506
URL: https://issues.apache.org/jira/browse/TS-1506
Project: Traffic Server
Issue Type: Bug
Components: Logging, SSL
Affects Versions: 3.2.3
Environment: OS X 10.8
Reporter: Conan Wang
cquuh (or cquuc, cquup) field symbol for logs_xml.config is introduced in
https://issues.apache.org/jira/browse/TS-1002. Requesting a normal url is OK.
If request a HTTPS url, TS will crash.
If log format contains %<cquuh>, TS will crash at logging phase.
{code}
[Sep 27 18:00:46.714] Server {0x103c04000} NOTE: cache enabled
[Sep 27 18:00:54.077] Server {0x108c06000} DEBUG: (ssl)
[SSLNextProtocolAccept:mainEvent] event 202 netvc 0x102065710
[Sep 27 18:00:54.078] Server {0x108c06000} DEBUG: (ssl) ssl=0x10470c240 ad=112
lookup=0x1007af780 server=wkl.me
[Sep 27 18:00:54.078] Server {0x108c06000} DEBUG: (ssl) found SSL context
0x101318fc0 for requested name 'wkl.me'
[Sep 27 18:00:54.078] Server {0x108c06000} DEBUG: (ssl) advertised NPN
sethttp/1.http/1.0
[Sep 27 18:00:54.082] Server {0x108c06000} DEBUG: (ssl)
SSLNetVConnection::sslServerHandShakeEvent, handshake completed successfully
[Sep 27 18:00:54.082] Server {0x108c06000} DEBUG: (ssl) client selected next
protocol http/1.1
[Sep 27 18:00:54.082] Server {0x108c06000} DEBUG: (ssl)
[SSLNextProtocolAccept:mainEvent] event 102 netvc 0x102065710
[Sep 27 18:00:54.099] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] b->write_avail()=4096
[Sep 27 18:00:54.099] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] rres=-1
[Sep 27 18:00:54.099] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] SSL_ERROR_WOULD_BLOCK(read)
[Sep 27 18:00:54.099] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] bytes_read == 0
[Sep 27 18:00:54.099] Server {0x108c06000} DEBUG: (ssl) read_from_net, read
finished - would block
[Sep 27 18:00:54.114] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] b->write_avail()=4096
[Sep 27 18:00:54.114] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] rres=657
SSL Read
GET / HTTP/1.1
Host: wkl.me
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4
(KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: __utma=113004674.1646024061.1302082154.1348645626.1348738067.49;
__utmb=113004674.99.10.1348738067; __utmc=113004674;
__utmz=113004674.1319557793.26.11.utmcsr=about.me|utmccn=(referral)|utmcmd=referral|utmcct=/wkl
[Sep 27 18:00:54.115] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] rres=-1
[Sep 27 18:00:54.115] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] SSL_ERROR_WOULD_BLOCK(read)
[Sep 27 18:00:54.115] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] bytes_read=657
[Sep 27 18:00:54.115] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] b->write_avail()=3439
[Sep 27 18:00:54.131] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] rres=-1
[Sep 27 18:00:54.131] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] SSL_ERROR_WOULD_BLOCK(read)
[Sep 27 18:00:54.131] Server {0x108c06000} DEBUG: (ssl)
[SSL_NetVConnection::ssl_read_from_net] bytes_read == 0
[Sep 27 18:00:54.133] Server {0x108c06000} DEBUG: (ssl) read_from_net, read
finished - would block
[Sep 27 18:00:54.351] Server {0x108c06000} DEBUG: (ssl)
SSLNetVConnection::loadBufferAndCallWrite, before do_SSL_write, l=302,
towrite=1061, b=0x103095340
[Sep 27 18:00:54.351] Server {0x108c06000} DEBUG: (ssl)
SSLNetVConnection::loadBufferAndCallWrite,Number of bytes written=302 ,
total=302
[Sep 27 18:00:54.351] Server {0x108c06000} DEBUG: (ssl)
SSLNetVConnection::loadBufferAndCallWrite, before do_SSL_write, l=759,
towrite=1061, b=0x103095300
[Sep 27 18:00:54.351] Server {0x108c06000} DEBUG: (ssl)
SSLNetVConnection::loadBufferAndCallWrite,Number of bytes written=759 ,
total=1061
[Sep 27 18:00:54.352] Server {0x108c06000} DEBUG: (ssl)
SSLNetVConnection::loadBufferAndCallWrite, write successful.
FATAL: LogAccess.cc:817: failed assert `actual_len < padded_len`
/Users/conan/develop/box/ts/bin/traffic_server - STACK TRACE:
0 libtsutil.3.dylib 0x0000000100bd0dd4 ink_fatal + 356
1 libtsutil.3.dylib 0x0000000100bce72c _ink_assert + 76
2 traffic_server 0x000000010019f36e
_ZN9LogAccess11marshal_memEPcPKcii + 108
3 traffic_server 0x00000001001a32d0
_ZN13LogAccessHttp36marshal_client_req_unmapped_url_hostEPc + 122
4 traffic_server 0x00000001001c2fef
_ZN8LogField7marshalEP9LogAccessPc + 155
5 traffic_server 0x00000001001c31ac
_ZN12LogFieldList7marshalEP9LogAccessPc + 88
6 traffic_server 0x00000001001d74a6
_ZN9LogObject3logEP9LogAccessPc + 2838
7 traffic_server 0x00000001001b2a01
_ZN16LogObjectManager3logEP9LogAccess + 73
8 traffic_server 0x00000001001a9a41
_ZN3Log6accessEP9LogAccess + 893
9 traffic_server 0x000000010010249f
_ZN6HttpSM12update_statsEv + 883
10 traffic_server 0x00000001001152f7
_ZN6HttpSM9kill_thisEv + 1039
11 traffic_server 0x0000000100115928
_ZN6HttpSM12main_handlerEiPv + 1126
12 traffic_server 0x0000000100060954
_ZN12Continuation11handleEventEiPv + 148
13 traffic_server 0x0000000100170f9c
_ZN10HttpTunnel12main_handlerEiPv + 460
14 traffic_server 0x0000000100060954
_ZN12Continuation11handleEventEiPv + 148
15 traffic_server 0x0000000100325354
_ZL23write_signal_and_updateiP18UnixNetVConnection + 100
16 traffic_server 0x0000000100325462
_ZL17write_signal_doneiP10NetHandlerP18UnixNetVConnection + 50
17 traffic_server 0x0000000100325ef3
_Z15write_to_net_ioP10NetHandlerP18UnixNetVConnectionP7EThread + 2547
18 traffic_server 0x0000000100326148
_Z12write_to_netP10NetHandlerP18UnixNetVConnectionP14PollDescriptorP7EThread +
168
19 traffic_server 0x000000010031864c
_ZN10NetHandler12mainNetEventEiP5Event + 3554
20 traffic_server 0x0000000100060954
_ZN12Continuation11handleEventEiPv + 148
21 traffic_server 0x000000010034d27a
_ZN7EThread13process_eventEP5Eventi + 370
22 traffic_server 0x000000010034cb45
_ZN7EThread7executeEv + 1311
23 traffic_server 0x000000010034bbd4
_ZL21spawn_thread_internalPv + 132
24 libsystem_c.dylib 0x00007fff880a2742 _pthread_start + 327
25 libsystem_c.dylib 0x00007fff8808f181 thread_start + 13
Program received signal SIGABRT, Aborted.
[Switching to process 3732 thread 0x2803]
0x00007fff879b1212 in __pthread_kill ()
(gdb) bt
#0 0x00007fff879b1212 in __pthread_kill ()
#1 0x00007fff880a3af4 in pthread_kill ()
#2 0x00007fff880e7dce in abort ()
#3 0x0000000100bcf7f0 in ink_die_die_die ()
#4 0x0000000100bd0ad5 in ink_fatal_va ()
#5 0x0000000100bd0dd4 in ink_fatal ()
#6 0x0000000100bce72c in _ink_assert ()
#7 0x000000010019f36e in LogAccess::marshal_mem ()
#8 0x00000001001a32d0 in LogAccessHttp::marshal_client_req_unmapped_url_host ()
#9 0x00000001001c2fef in LogField::marshal ()
#10 0x00000001001c31ac in LogFieldList::marshal ()
#11 0x00000001001d74a6 in LogObject::log ()
#12 0x00000001001b2a01 in LogObjectManager::log ()
#13 0x00000001001a9a41 in Log::access ()
#14 0x000000010010249f in HttpSM::update_stats ()
#15 0x00000001001152f7 in HttpSM::kill_this ()
#16 0x0000000100115928 in HttpSM::main_handler ()
#17 0x0000000100060954 in Continuation::handleEvent ()
#18 0x0000000100170f9c in HttpTunnel::main_handler ()
#19 0x0000000100060954 in Continuation::handleEvent ()
#20 0x0000000100325354 in write_signal_and_update ()
#21 0x0000000100325462 in write_signal_done ()
#22 0x0000000100325ef3 in write_to_net_io ()
#23 0x0000000100326148 in write_to_net ()
#24 0x000000010031864c in NetHandler::mainNetEvent ()
#25 0x0000000100060954 in Continuation::handleEvent ()
#26 0x000000010034d27a in EThread::process_event ()
#27 0x000000010034cb45 in EThread::execute ()
#28 0x000000010034bbd4 in spawn_thread_internal ()
#29 0x00007fff880a2742 in _pthread_start ()
#30 0x00007fff8808f181 in thread_start ()
{code}
If log format contains %<cquup> or %<cquuc>, crash message is like below. (can
reproduce by requesting a https url several times in parallel / pressing F5
quickly)
{code}
FATAL: ../../proxy/hdrs/URL.h:419: failed assert `valid()`
/Users/conan/develop/box/ts/bin/traffic_server - STACK TRACE:
0 libtsutil.3.dylib 0x0000000100bd0dd4 ink_fatal + 356
1 libtsutil.3.dylib 0x0000000100bce72c _ink_assert + 76
2 traffic_server 0x00000001001230f1
_ZN3URL14string_get_refEPi + 65
3 traffic_server 0x00000001001a31cb
_ZN13LogAccessHttp21validate_unmapped_urlEv + 77
4 traffic_server 0x00000001001a3302
_ZN13LogAccessHttp36marshal_client_req_unmapped_url_pathEPc + 28
5 traffic_server 0x00000001001c32c7
_ZN8LogField11marshal_lenEP9LogAccess + 157
6 traffic_server 0x00000001001c34a6
_ZN12LogFieldList11marshal_lenEP9LogAccess + 94
7 traffic_server 0x00000001001d7043
_ZN9LogObject3logEP9LogAccessPc + 1715
8 traffic_server 0x00000001001b2a01
_ZN16LogObjectManager3logEP9LogAccess + 73
9 traffic_server 0x00000001001a9a41
_ZN3Log6accessEP9LogAccess + 893
10 traffic_server 0x000000010010249f
_ZN6HttpSM12update_statsEv + 883
11 traffic_server 0x00000001001152f7
_ZN6HttpSM9kill_thisEv + 1039
12 traffic_server 0x0000000100115928
_ZN6HttpSM12main_handlerEiPv + 1126
13 traffic_server 0x0000000100060954
_ZN12Continuation11handleEventEiPv + 148
14 traffic_server 0x0000000100324564
_ZL22read_signal_and_updateiP18UnixNetVConnection + 100
15 traffic_server 0x00000001003246a2
_ZL16read_signal_doneiP10NetHandlerP18UnixNetVConnection + 50
16 traffic_server 0x0000000100324717
_ZN18UnixNetVConnection14readSignalDoneEiP10NetHandler + 45
17 traffic_server 0x000000010030ae44
_ZN17SSLNetVConnection11net_read_ioEP10NetHandlerP7EThread + 2308
18 traffic_server 0x000000010031852c
_ZN10NetHandler12mainNetEventEiP5Event + 3266
19 traffic_server 0x0000000100060954
_ZN12Continuation11handleEventEiPv + 148
20 traffic_server 0x000000010034d27a
_ZN7EThread13process_eventEP5Eventi + 370
21 traffic_server 0x000000010034cb45
_ZN7EThread7executeEv + 1311
22 traffic_server 0x000000010034bbd4
_ZL21spawn_thread_internalPv + 132
23 libsystem_c.dylib 0x00007fff880a2742 _pthread_start + 327
24 libsystem_c.dylib 0x00007fff8808f181 thread_start + 13
Program received signal SIGABRT, Aborted.
[Switching to process 3610 thread 0x2a03]
0x00007fff879b1212 in __pthread_kill ()
(gdb) bt
#0 0x00007fff879b1212 in __pthread_kill ()
#1 0x00007fff880a3af4 in pthread_kill ()
#2 0x00007fff880e7dce in abort ()
#3 0x0000000100bcf7f0 in ink_die_die_die ()
#4 0x0000000100bd0ad5 in ink_fatal_va ()
#5 0x0000000100bd0dd4 in ink_fatal ()
#6 0x0000000100bce72c in _ink_assert ()
#7 0x00000001001230f1 in URL::string_get_ref ()
#8 0x00000001001a31cb in LogAccessHttp::validate_unmapped_url ()
#9 0x00000001001a3302 in LogAccessHttp::marshal_client_req_unmapped_url_path ()
#10 0x00000001001c32c7 in LogField::marshal_len ()
#11 0x00000001001c34a6 in LogFieldList::marshal_len ()
#12 0x00000001001d7043 in LogObject::log ()
#13 0x00000001001b2a01 in LogObjectManager::log ()
#14 0x00000001001a9a41 in Log::access ()
#15 0x000000010010249f in HttpSM::update_stats ()
#16 0x00000001001152f7 in HttpSM::kill_this ()
#17 0x0000000100115928 in HttpSM::main_handler ()
#18 0x0000000100060954 in Continuation::handleEvent ()
#19 0x0000000100324564 in read_signal_and_update ()
#20 0x00000001003246a2 in read_signal_done ()
#21 0x0000000100324717 in UnixNetVConnection::readSignalDone ()
#22 0x000000010030ae44 in SSLNetVConnection::net_read_io ()
#23 0x000000010031852c in NetHandler::mainNetEvent ()
#24 0x0000000100060954 in Continuation::handleEvent ()
#25 0x000000010034d27a in EThread::process_event ()
#26 0x000000010034cb45 in EThread::execute ()
#27 0x000000010034bbd4 in spawn_thread_internal ()
#28 0x00007fff880a2742 in _pthread_start ()
#29 0x00007fff8808f181 in thread_start ()
{code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira