Glen Barber wrote:> On Fri, Jul 28, 2017 at 03:24:50PM +0200, Peter wrote: >> After upgrading to 11.1-RELEASE, a new line appears in the output of "top" >> which contains rubbish: >> >>> last pid: 10789; load averages: 5.75, 5.19, 3.89 up 0+00:34:46 03:23:51 >>> 1030 processes:9 running, 1004 sleeping, 17 waiting >>> CPU 0: 16.0% user, 0.0% nice, 78.7% system, 4.9% interrupt, 0.4% idle >>> CPU 1: 8.0% user, 0.0% nice, 82.5% system, 9.1% interrupt, 0.4% idle >>> Mem: 218M Active, 34M Inact, 105M Laundry, 600M Wired, 18M Buf, 34M Free >>> ARC: 324M Total, 54M MFU, 129M MRU, 2970K Anon, 13M Header, 125M Other >>> 136?176M Compress185 194M Uncompressed361.94:1 Ratio >>> Swap: 2441M Total, 277M Used, 2164M Free, 11% Inuse >> >>> PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND >> .. >> >> >> That looks funny. But I dont like it. >> > > It appears to be fixed in 11-STABLE (r321419). > > Glen >I don't think so. At least there is nothing in the commitlog. r318449 is the last commit in 11-STABLE for the respective file; and thats before the 11.1-RELEASE branch. The error is in the screen-formatting in "top", and that error was already present back in 1997 (and probably earlier), and it is also present in HEAD. What "top" does is basically this: > char *string = some_buffer_to_print; > printf("%.5s", &string[-4]); A negative index on a string usually yields a nullified area. (Except if otherwise *eg*) Thats why we usually don't see the matter - nullbytes are invisible on screen. Fix is very simple: Index: contrib/top/display.c ==================================================================--- display.c (revision 321434) +++ display.c (working copy) @@ -1310,7 +1310,7 @@ cursor_on_line = Yes; putchar(ch); *old = ch; - lastcol = 1; + lastcol++; } old++; --------------------------------------------------------- Then, since I was at it, I decided to beautify the proc display as well, as I usually see >1000 procs: --- display.c (revision 321434) +++ display.c (working copy) @@ -100,7 +100,7 @@ int y_loadave = 0; int x_procstate = 0; int y_procstate = 1; -int x_brkdn = 15; +int x_brkdn = 16; int y_brkdn = 1; int x_mem = 5; int y_mem = 3; @@ -373,9 +373,9 @@ printf("%d processes:", total); ltotal = total; - /* put out enough spaces to get to column 15 */ + /* put out enough spaces to get to column 16 */ i = digits(total); - while (i++ < 4) + while (i++ < 5) { putchar(' '); } ---------------------------------------------------------------- Then, concerning the complaint about the empty line (bug #220996), I couldn't really reproduce this. But it seems that specifically this issue was already fixed in HEAD by this one here: https://reviews.freebsd.org/D11693 ---------------------------------------------------------------- Now, can anybody make the above snippets appear in HEAD and 11-STABLE?
Glen Barber
2017-Jul-28 18:18 UTC
11.1-RELEASE: new line containing garbage added to "top"
On Fri, Jul 28, 2017 at 07:04:51PM +0200, Peter wrote:> Glen Barber wrote: > > On Fri, Jul 28, 2017 at 03:24:50PM +0200, Peter wrote: > > > After upgrading to 11.1-RELEASE, a new line appears in the output of "top" > > > which contains rubbish: > > > > > > > last pid: 10789; load averages: 5.75, 5.19, 3.89 up 0+00:34:46 03:23:51 > > > > 1030 processes:9 running, 1004 sleeping, 17 waiting > > > > CPU 0: 16.0% user, 0.0% nice, 78.7% system, 4.9% interrupt, 0.4% idle > > > > CPU 1: 8.0% user, 0.0% nice, 82.5% system, 9.1% interrupt, 0.4% idle > > > > Mem: 218M Active, 34M Inact, 105M Laundry, 600M Wired, 18M Buf, 34M Free > > > > ARC: 324M Total, 54M MFU, 129M MRU, 2970K Anon, 13M Header, 125M Other > > > > 136?176M Compress185 194M Uncompressed361.94:1 Ratio > > > > Swap: 2441M Total, 277M Used, 2164M Free, 11% Inuse > > > > > > > PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU COMMAND > > > .. > > > > > > > > > That looks funny. But I dont like it. > > > > > > > It appears to be fixed in 11-STABLE (r321419). > > > > Glen > > > > I don't think so. At least there is nothing in the commitlog. r318449 is the > last commit in 11-STABLE for the respective file; and thats before the > 11.1-RELEASE branch. >See r321419.> The error is in the screen-formatting in "top", and that error was already > present back in 1997 (and probably earlier), and it is also present in HEAD. > > What "top" does is basically this: > > > char *string = some_buffer_to_print; > > printf("%.5s", &string[-4]); > > A negative index on a string usually yields a nullified area. (Except if > otherwise *eg*) Thats why we usually don't see the matter - nullbytes are > invisible on screen. > > Fix is very simple: > > Index: contrib/top/display.c > ==================================================================> --- display.c (revision 321434) > +++ display.c (working copy) > @@ -1310,7 +1310,7 @@ > cursor_on_line = Yes; > putchar(ch); > *old = ch; > - lastcol = 1; > + lastcol++; > } > old++; > > > --------------------------------------------------------- > Then, since I was at it, I decided to beautify the proc display as well, as > I usually see >1000 procs: > > > --- display.c (revision 321434) > +++ display.c (working copy) > @@ -100,7 +100,7 @@ > int y_loadave = 0; > int x_procstate = 0; > int y_procstate = 1; > -int x_brkdn = 15; > +int x_brkdn = 16; > int y_brkdn = 1; > int x_mem = 5; > int y_mem = 3; > @@ -373,9 +373,9 @@ > printf("%d processes:", total); > ltotal = total; > > - /* put out enough spaces to get to column 15 */ > + /* put out enough spaces to get to column 16 */ > i = digits(total); > - while (i++ < 4) > + while (i++ < 5) > { > putchar(' '); > } > > > ---------------------------------------------------------------- > Then, concerning the complaint about the empty line (bug #220996), I > couldn't really reproduce this. But it seems that specifically this issue > was already fixed in HEAD by this one here: > https://reviews.freebsd.org/D11693 > > ---------------------------------------------------------------- > Now, can anybody make the above snippets appear in HEAD and 11-STABLE? >I've CC'd allanjude, who has touched some of these in the past. Glen -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 833 bytes Desc: not available URL: <http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20170728/9c3a542f/attachment.sig>