Skip to content

log: Recursive call of say_default function #11840

@elhimov

Description

@elhimov

Bug description

There is an issue in logger that can cause stack overflow due to recursive call of say_default function. This occurs when the following conditions are met:

  • logger type is syslog
  • log level is set to debug
  • logger lost connection and failed to reconnect

With debug log level logger tries to log re-connection failure itself and thus enter the loop. One can track the route of calls with below stacktrace:

frame 8 -- inner call of say_default
frame 9 -- re-connection failure in syslog_connect_remote
...
frame 59174 -- inner call of say_default
frame 59175 -- re-connection failure in syslog_connect_remote
...
frame 59180 -- outer call of say_default
frame 59181 -- initial error to be logged

#3  0x0000558297f914db in syslog_connect_remote (server_address=0x5582c7fbc050 "10.78.229.5:514")
    at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:569
#4  0x0000558297f91db9 in log_syslog_connect (log=0x55829ae39140 <log_std.lto_priv>)
    at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:608
#5  write_to_syslog (total=111, log=0x55829ae39140 <log_std.lto_priv>) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1155
#6  log_vsay (log=0x55829ae39140 <log_std.lto_priv>, level=level@entry=7, check_level=check_level@entry=true, module=module@entry=0x0, 
    filename=filename@entry=0x5582989d3fb8 "./tarantool/src/lib/core/say.c", line=line@entry=585, error=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i", ap=0x7f9ec40011b0) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1385
#7  0x0000558297f91e3f in say_internal (level=level@entry=7, check_level=check_level@entry=true, module=module@entry=0x0, 
    filename=filename@entry=0x5582989d3fb8 "./tarantool/src/lib/core/say.c", line=line@entry=585, error=error@entry=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i", ap=0x7f9ec40011b0) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1058
#8  0x0000558297f9207a in say_default (level=7, filename=0x5582989d3fb8 "./tarantool/src/lib/core/say.c", line=585, error=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i") at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1087
#9  0x0000558297f917b2 in syslog_connect_remote (server_address=<optimized out>)
    at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:585
#10 0x0000558297f91db9 in log_syslog_connect (log=0x55829ae39140 <log_std.lto_priv>)
    at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:608
#11 write_to_syslog (total=111, log=0x55829ae39140 <log_std.lto_priv>) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1155
#12 log_vsay (log=0x55829ae39140 <log_std.lto_priv>, level=level@entry=7, check_level=check_level@entry=true, module=module@entry=0x0, 
    filename=filename@entry=0x5582989d3fb8 "./tarantool/src/lib/core/say.c", line=line@entry=585, error=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i", ap=0x7f9ec4001500) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1385
#13 0x0000558297f91e3f in say_internal (level=level@entry=7, check_level=check_level@entry=true, module=module@entry=0x0, 
    filename=filename@entry=0x5582989d3fb8 "./tarantool/src/lib/core/say.c", line=line@entry=585, error=error@entry=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i", ap=0x7f9ec4001500) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1058
#14 0x0000558297f9207a in say_default (level=7, filename=0x5582989d3fb8 "./tarantool/src/lib/core/say.c", line=585, error=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i") at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1087
.
.
.
#59174 0x0000558297f9207a in say_default (level=7, filename=0x5582989d3fb8 "./tarantool/src/lib/core/say.c", line=585, error=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i") at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1087
#59175 0x0000558297f917b2 in syslog_connect_remote (server_address=<optimized out>)
    at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:585
#59176 0x0000558297f91db9 in log_syslog_connect (log=0x55829ae39140 <log_std.lto_priv>)
    at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:608
#59177 write_to_syslog (total=98, log=0x55829ae39140 <log_std.lto_priv>) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1155
#59178 log_vsay (log=0x55829ae39140 <log_std.lto_priv>, level=level@entry=7, check_level=check_level@entry=true, module=module@entry=0x0, 
    filename=filename@entry=0x5582989ce5f4 "./src/lib/core/ssl.c", line=line@entry=359, error=0x0, format=0x5582989ce3c5 "%s at %s:%i", 
    ap=0x7f9f113f37f0) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1385
#59179 0x0000558297f91e3f in say_internal (level=level@entry=7, check_level=check_level@entry=true, module=module@entry=0x0, 
    filename=filename@entry=0x5582989ce5f4 "./src/lib/core/ssl.c", line=line@entry=359, error=error@entry=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i", ap=0x7f9f113f37f0) at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1058
#59180 0x0000558297f9207a in say_default (level=7, filename=0x5582989ce5f4 "./src/lib/core/ssl.c", line=359, error=0x0, 
    format=0x5582989ce3c5 "%s at %s:%i") at /__w/sdk/sdk/tarantool-ee-3.2/tarantool/src/lib/core/say.c:1087
#59181 0x0000558297f6e9e2 in ssl_iostream_read (io=0x7f9f10442008, buf=<optimized out>, count=16336)
    at /__w/sdk/sdk/tarantool-ee-3.2/src/lib/core/ssl.c:359
  • OS: Any
  • OS Version: Any
  • Architecture: Any

Arose by TNTP-1622
Duplicate of TNTP-4678

Metadata

Metadata

Assignees

Labels

3.2Target is 3.2 and all newer release/master branchesbugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions