Project

General

Profile

Actions

Bug #4871

closed

osmo_stats statsd reporter submitting broken data

Added by pespin over 3 years ago. Updated over 3 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
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

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)