Hi Lianbo,
It seems we have a problem printing disassembly blocks in the log after this patch (at least on s390).
See number of empty lines printed below.
Can you try it with the following two patches?
Before the patch:
[ 21.408784] Krnl GPRS: 000002aa3780c000 0000000000238c00 0000000015800000 0000000000001000
[ 21.408787] 0000000008e30000 00000000b0001000 0000000000000000 0000000000000a55
[ 21.408790] 0000000004c52300 000002aa3780c000 00000000084281d0 0000038000bfbd28
[ 21.408794] 00000000075e9500 0000000004c52300 0000038000bfbbf0 0000038000bfbb90
[ 21.408860] Krnl Code: 000000000e0acf48: c05fb0001000 llilf %r5,2952794112
000000000e0acf4e: ec4100b30659 risbgn %r4,%r1,0,179,6
#000000000e0acf54: 0e24 mvcl %r2,%r4
>000000000e0acf56: a7280000 lhi %r2,0
000000000e0acf5a: eb6ff0a80004 lmg %r6,%r15,168(%r15)
000000000e0acf60: b9140022 lgfr %r2,%r2
000000000e0acf64: 07fe bcr 15,%r14
000000000e0acf66: 47000700 bc 0,1792
[ 21.408883] Call Trace:
After the patch:
[ 21.408784] Krnl GPRS: 000002aa3780c000 0000000000238c00 0000000015800000 0000000000001000
[ 21.408787] 0000000008e30000 00000000b0001000 0000000000000000 0000000000000a55
[ 21.408790] 0000000004c52300 000002aa3780c000 00000000084281d0 0000038000bfbd28
[ 21.408794] 00000000075e9500 0000000004c52300 0000038000bfbbf0 0000038000bfbb90
[ 21.408860]
Krnl Code: 000000000e0acf48: c05fb0001000 llilf %r5,2952794112
[ 21.408883] Call Trace:
I think your approach of storing printable characters in the buffer with the intention to modify it
afterwards (see [1] below) instead of writing it character wise does not work when the input data
contains several lines. Those '\n' are written one by one, what leads to the result shown above.
You should probably buffer and 'demangle' each line separately.
Looks like different issues. Can you share your vmcore and vmlinux with me? I did not reproduce it.
Thanks
Lianbo