Commit 4e4c9e01 authored by jeromemarchand's avatar jeromemarchand Committed by yonghong-song

ucalls: use replace error handler (#1888)

Prevents the following error when tracing a java program that contains
non-ascii method name:

Traceback (most recent call last):
  File "/usr/share/bcc/tools/lib/ucalls", line 305, in <module>
    data = get_data()   # [(function, (num calls, latency in ns))]
  File "/usr/share/bcc/tools/lib/ucalls", line 266, in get_data
    bpf["counts"].items()))
  File "/usr/share/bcc/tools/lib/ucalls", line 264, in <lambda>
    kv[0].method.decode(),
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 11: ordinal not in range(128)
Signed-off-by: default avatarJerome Marchand <jmarchan@redhat.com>
parent e36f9e16
...@@ -255,13 +255,15 @@ if args.syscalls: ...@@ -255,13 +255,15 @@ if args.syscalls:
def get_data(): def get_data():
# Will be empty when no language was specified for tracing # Will be empty when no language was specified for tracing
if args.latency: if args.latency:
data = list(map(lambda kv: (kv[0].clazz.decode() + "." + \ data = list(map(lambda kv: (kv[0].clazz.decode('utf-8', 'replace') \
kv[0].method.decode(), + "." + \
kv[0].method.decode('utf-8', 'replace'),
(kv[1].num_calls, kv[1].total_ns)), (kv[1].num_calls, kv[1].total_ns)),
bpf["times"].items())) bpf["times"].items()))
else: else:
data = list(map(lambda kv: (kv[0].clazz.decode() + "." + \ data = list(map(lambda kv: (kv[0].clazz.decode('utf-8', 'replace') \
kv[0].method.decode(), + "." + \
kv[0].method.decode('utf-8', 'replace'),
(kv[1].value, 0)), (kv[1].value, 0)),
bpf["counts"].items())) bpf["counts"].items()))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment