El día sábado, marzo 16, 2019 a las 11:50:48a. m. +0000, Tom Hughes escribió:
> On 16/03/2019 11:42, Matthias Apitz wrote:
> > El día sábado, marzo 16, 2019 a las 09:23:06a. m. +0100, Matthias Apitz
> > escribió:
> >
> >>> What is the value of MAX_FSTAB_ROWS ?
> >>
> >> #define MAX_FSTAB_ROWS 3000
> >
> > I set a gdb breakpoint at the entry of FstabInit(). The size of the
> > array is:
> >
> > (gdb) p sizeof(t_sik_fstab)
> > $4 = 950
> > (gdb) p sizeof(myFSTABrows)
> > $5 = 2850000
> >
> > and as well I can not see anything unusual while stepping through the
> > init sequence of the function.
>
> That's nearly 3Mbytes that you are creating on the stack
> which is quite a lot...
>
> More importantly it is more than the default value that
> valgrind uses for --max-stackframe so it is likely to lead
> to confusion - do you get a warning about a stack switch
> being assumed before those other messages?
>
> Try using --max-stackframe=4000000 or something to specify
> a larger maximum stack frame size and see if that helps.
It says at the start when I set '--main-stacksize=640000000':
==5868== Memcheck, a memory error detector
==5868== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==5868== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==5868== Command: /opt/lib/sisis/opserver/bin/OPServer -p 4711
==5868==
16.03.2019 09:17:15.772 OPServer <5868> : started at : 16.03.2019 09:17:15
==5868== Warning: client switching stacks? SP change: 0xffefff3e8 -->
0xffed47690
==5868== to suppress, use: --max-stackframe=2850136 or greater
==5868== Invalid write of size 4
==5868== at 0x9DE90EF: FstabInit (BKFstab.c:2131)
==5868== by 0x6BFF1E8: OpsInitDatabase (SRVServerInit.c:1299)
==5868== by 0x413B48: SlnpInitDaemon (OPDaemon.c:738)
==5868== by 0x413657: main (OPDaemon.c:272)
==5868== Address 0xffed476bc is on thread 1's stack
==5868== in frame #0, created by FstabInit (BKFstab.c:2131)
Ahh, it's requesting to higher '--max-stackframe'. The '--main-stacksize'
is per default 8M and big enough, but '--max-stackframe' is per default
only 2000000. I set it to 8000000 and with this the warning above and the
false positive about bad reads in FstabInit() disappeared.
Thanks for the hint and I will think in rewrite this using malloc(3C).
Lesson learned.
matthias
--
Matthias Apitz, ✉ [email protected], http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub
signature.asc
Description: PGP signature
_______________________________________________ Valgrind-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/valgrind-users
