Actions
Bug #4871
closedosmo_stats statsd reporter submitting broken data
Start date:
11/27/2020
Due date:
% Done:
100%
Spec Reference:
Description
snprintf format being used in osmo_stats_reporter_statsd_send seems to be broken or not supported when I run libosmocore master (920491936e1d4636d55c44d2faaad4bb06de27ee) on my raspberry pi 3b+.
See how output buffer of snprintf doesn't match expected output from content of input variables:
Breakpoint 1, osmo_stats_reporter_statsd_send (srep=0x7400e570, name1=0x203c0 "power_meter", index1=1, name2=0x1ff00 "power_meter.export_energy", value=12000, unit=0x76750ac0 "g") at /home/pi/dev/git/libosmocore/src/stats_statsd.c:96 96 int nchars, rc = 0; (gdb) n 97 char *fmt = NULL; (gdb) n 98 char *prefix = srep->name_prefix; (gdb) n 99 int old_len = msgb_length(srep->buffer); (gdb) n 101 if (prefix) { (gdb) n 102 if (name1) (gdb) 103 fmt = "%1$s.%2$s.%6$u.%3$s:%4$d|%5$s"; (gdb) 114 if (srep->agg_enabled) { (gdb) 115 if (msgb_length(srep->buffer) > 0 && (gdb) 122 buf = (char *)msgb_put(srep->buffer, 0); (gdb) 123 buf_size = msgb_tailroom(srep->buffer); (gdb) 125 nchars = snprintf(buf, buf_size, fmt, (gdb) 129 if (nchars >= buf_size) { (gdb) print buf $1 = 0x71a028f4 "dosmotics.power_meter.1987381952.power_meter.export_energy:12000|(null)" (gdb) print unit $2 = 0x76750ac0 "g" (gdb) print nchars $3 = 71 (gdb) print index1 $4 = 1 (gdb) print fm No symbol "fm" in current context. (gdb) print fmt $5 = 0x76750940 "%1$s.%2$s.%6$u.%3$s:%4$d|%5$s" (gdb) info locals buf = 0x71a028f4 "dosmotics.power_meter.1987381952.power_meter.export_energy:12000|(null)" buf_size = 996 nchars = 71 rc = 0 fmt = 0x76750940 "%1$s.%2$s.%6$u.%3$s:%4$d|%5$s" prefix = 0x73c693b0 "dosmotics" old_len = 0 (gdb) print prefix $6 = 0x73c693b0 "dosmotics" (gdb) print name1 $7 = 0x203c0 "power_meter" (gdb) print name2 $8 = 0x1ff00 "power_meter.export_energy" (gdb) print value $9 = 12000 (gdb) print unit $10 = 0x76750ac0 "g" (gdb) print index1 $11 = 1
Package: libc6 Version: 2.28-10+rpi1
Actions