[squid-dev] [MERGE] Fix splay
Tsantilas Christos
chtsanti at users.sourceforge.net
Tue Jan 6 20:12:08 UTC 2015
Hi all,
I am getting assertions while squid.conf parsed using the latest squid
sources. Looks that the reason is the splay trees. Is it possible that
this patch causes these bugs?
I am seeing this problem when an "acl localhost src 127.0.0.1/32" line
is parsed (duplicate value?) or when "proxy_auth" or snmp_community acls
parsed.
Backtace for proxy_auth acl line ("acl UserChtsanti proxy_auth
chtsanti") is the following:
#0 find<char*> (this=0x0, compare=0xb89f80 <Debug::Levels>,
value=@0x7fff4bcf01e8: 0x1396b50 "chtsanti") at
../../include/splay.h:287
#1 Splay<char*>::insert (this=0x0,
value=@0x7fff4bcf01e8: 0x1396b50 "chtsanti",
compare=0x6a6620 <splaystrcmp(char* const&, char* const&)>)
at ../../include/splay.h:302
#2 0x00000000006a7130 in ACLUserData::parse (this=0x1395f50)
at UserData.cc:120
#3 0x00000000006e5d8e in ACL::ParseAclLine (parser=...,
head=0xcb2318 <Config+1336>) at Acl.cc:263
#4 0x000000000052ad18 in parse_acl (ae=<optimized out>) at cache_cf.cc:1292
#5 parse_line (buff=<optimized out>) at cf_parser.cci:921
#6 0x000000000052c2b2 in parseOneConfigFile (
file_name=file_name at entry=0x1386d30 "squid-http-bypass.conf",
depth=depth at entry=0) at cache_cf.cc:543
#7 0x000000000052cde9 in parseConfigFile (
file_name=0x1386d30 "squid-http-bypass.conf") at cache_cf.cc:584
#8 0x00000000005ffe51 in SquidMain (argc=<optimized out>,
argv=0x7fff4bcf08a8)
at main.cc:1397
#9 0x000000000050815b in SquidMainSafe (argv=<optimized out>,
argc=<optimized out>) at main.cc:1251
#10 main (argc=<optimized out>, argv=<optimized out>) at main.cc:1244
(gdb) up
#1 Splay<char*>::insert (this=0x0,
value=@0x7fff4bcf01e8: 0x1396b50 "chtsanti",
compare=0x6a6620 <splaystrcmp(char* const&, char* const&)>)
at ../../include/splay.h:302
302 assert (!find (value, compare));
On 01/06/2015 05:52 AM, Amos Jeffries wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 3/01/2015 1:54 a.m., Kinkie wrote:
>>> I believe this is missing several "delete Foo;" in the ACL
>>> destructors. You used new() to allocate the Splay<> objects,
>>> there should be matching delete() at the same owner/abstraction
>>> level. For example: " ACLIP::~ACLIP() { if (data) {
>>> data->destroy(IPSplay::DefaultFree); data->destroy(); delete
>>> data; } } " ... although, it would be even better if the data
>>> members could be made non-pointers now they are Splay<> objects.
>>> Is that easy enough to do in this patch ?
>>
>> Well, splay doesn't have a destructor :\ I'll see if I can do
>> something about it.
>>
>>> Other than the new() / delete() issue. +1.
>>
>> Ok, thanks. I'll also see about the empty lines.
>>
>
> For the record this was merged as trunk rev.13810.
>
> Amos
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.22 (MingW32)
>
> iQEcBAEBAgAGBQJUq1wFAAoJELJo5wb/XPRjjcIIAI1DKgOnGgX+l5HQXsc6YK2J
> ALTV1FryIfE0v179uSy2RshWuq3VdgDbVBHQmHjLhcEtK2wJVNHBWzML7Bqfpdn8
> O5ayKRqsjg5nhSsgr0NbaGhivK/JCM5vO3Q4vejFQp2Oy3geZOBvZfntFoUBp1xu
> o2P5ZzgFU1sQ9LoM5WoCjfWwfb7BOrKbwkEX/BzK0v9iOx9b3U6dpOtCKT11EDTg
> MW9x0UVjAC/TVRY9bXiBAEUHG4TPPIa5Syrx9bIqobA8u2UTLd36TQqNdfJDz3jP
> sVGN6B/p6W4gbEsTJnqfP7YEXmhb+gMvCYNdNvlhS7152APdi8+TNNJkSaqWGQQ=
> =buZA
> -----END PGP SIGNATURE-----
> _______________________________________________
> squid-dev mailing list
> squid-dev at lists.squid-cache.org
> http://lists.squid-cache.org/listinfo/squid-dev
>
More information about the squid-dev
mailing list