Build failed in Hudson: 3.HEAD-i386-OpenBSD-4.5 #399

From: <noc_at_squid-cache.org>
Date: Wed, 2 Jun 2010 17:57:52 +0200 (CEST)

See <http://build.squid-cache.org/job/3.HEAD-i386-OpenBSD-4.5/399/changes>

Changes:

[Amos Jeffries <squid3_at_treenet.co.nz>] Bug 2305: Multiple leaks and assertion crashes in authentication.

* implements proper RefCounting using the RefCount.h classes for
almost all auth objects in Squid.

* Restructures auth objects with a simpler structure of duties and scopes.

* Prunes away several circular and indirectly circular pointer loops

* Adds an API to auth config for handling the mainRotate() event. To only
shutdown helpers, fixing the loss of cached credentials on rotate.

* Adds a username_cache page to cachemgr interface to display the current
credentials and their TTLs to various revalidation or garbage events.

With this we end up with several global pointers for the auth schemes which
have been built into the current Squid. These are RefCount pointers, fixing
the leak of schemes on shutdown. Schemes are now also permanent structures
for the runtime of Squid, fixing leaks on reconfigure and rotate actions.

These AuthSchemes are responsible for creating auth Config objects for each
auth protocol configured in squid.conf. These config objects are now also
able to be altered with a reconfigure instead of requiring a restart.

Each HTTP request authentication attempt generates AuthUserRequest objects,
which may or may not pointer to an AuthUser set of credentials being checked.
AuthUserRequest is RefCounted instead of locked, fixing several assertion
crashes.

AuthUser is now RefCounted instead of locked. It's children inherit
these properties. This simplifies the object handling a lot and fixes
several assertions.
* This also means AuthUser no longer needs a back-pointer to all
AuthUserRequest in order to see if its still needed alive, fixing one
circular lock loop and a few possible assertions.
* The username cache pointers to only AuthUser objects, fixing a second
cirular lock loop and potentially leakage. Also simplifying the hash cache
handling a lot.

Non-Auth code needing a reference to authentication credentials should
hold a pointer to either an AuthUserRequest or AuthUser object. Not any
other auth object.

FUTURE WORK;
There is still some conditions leading to auth re-challenge when they
are not expected.
A fair chunk of classes and enums have been shuffled into separate files
to keep the scopes clearer. This could be increased in future when
building the Auth namespace.
Potential is now present for simpler TTL handling for all auth types.

This work was a collaboration between multiple interested parties over
the last year, with additional developer time and testing funded by
Netspace Online Systems.

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Audit fixes

[Amos Jeffries <squid3_at_treenet.co.nz>] Remove some excess whitespace

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Remove some cruft before audit

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] build errors after trunk update to IpAddress

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Author: Alex Rousskov <rousskov_at_squid-cache.org>
Bug 2896: assertion failed: comm.cc:2063: !fd_table[fd].closing()

[Amos Jeffries <squid3_at_treenet.co.nz>] Remove debugging assert on shutdown.

[Amos Jeffries <squid3_at_treenet.co.nz>] Unify auth schemes credential states.

Each scheme was maintaining it's own fields about what the state of the
credentials was.
This allows code to determine the state of the credentials easily.
Username cache can also display the credential state of any auth type now.

Tested on Basic, not yet tested for Digest, NTLM, Negotiate.

Also: fixed error where Negotiate always reported no program configured.

[Amos Jeffries <squid3_at_treenet.co.nz>] Combine Basic auth credentials_checkedtime with auth expiretime fields.

[Amos Jeffries <squid3_at_treenet.co.nz>] Make proxy_auth ACL fail on invalid auth credentials.

[Amos Jeffries <squid3_at_treenet.co.nz>] Drop obsolete auth_type from ConnState.

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge validate wrapper into AuthuerRequest

[Amos Jeffries <squid3_at_treenet.co.nz>] Remove old authenticateValidateUser wrapper

[Amos Jeffries <squid3_at_treenet.co.nz>] Remove obsolete auth code from FilleDchecklist

[Amos Jeffries <squid3_at_treenet.co.nz>] Prevent automake building empty AuthTypes.cc

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Ensure BasicAuthQueueNode is NULL on allocation

[Amos Jeffries <squid3_at_treenet.co.nz>] Straighten the reconfigure and rotate sequences auth handling.

* Add a hook into auth API to only restart the helpers instead of
dropping auth state.

* Make reconfigure drop idle state and reset the config for new requests
to use the new config details.
This makes auth settings alterable with just a reconfigure now.

[Amos Jeffries <squid3_at_treenet.co.nz>] Add details to username_cache display page

* Check TTL - time until cached credentials will be re-validated

* Cache TTL - time until cached credentials will be eligable for removal.

* Add: "Next garbage collection in N seconds" - time until next removal.

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Straighten out AuthUserHashPointer code

* AuthserHashPointer is a 'temporary' type which may only be stored by the
username hash table. Remove a unused pointer to it in AuthUser.

* Removes a duplicate walk of the username hash table on reconfigure.

* Removes several useless functions.

[Amos Jeffries <squid3_at_treenet.co.nz>] Kill final traces of UserRequest circular references.

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] also check data is non-null on auth checks

[Amos Jeffries <squid3_at_treenet.co.nz>] Resolve assert in cacheCleanup

[Amos Jeffries <squid3_at_treenet.co.nz>] RefCount AuthUser and children

Also adds CacheMgr "username_cache" display page to view the
currently cached usernames and how long their TTLs are for.

[Amos Jeffries <squid3_at_treenet.co.nz>] Merged from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Some AuthUserReuqest polish and bug removal

* merge multiple authenticate and authenticateChildren members from
child classes into the parent AuthUserRequest

* severe circular ref-count links between AuthUser object and
AuthUserRequest. It appears to be unused and causes problems by merely
existing.

* remove entry from client_side unsettign the auth credentials of a
request simply because it was being logged.
The log code woud be better pulling the credentials from the request
directly when needed instead of cloning the text. RefCount in both request
and AuthUser holds the info in place until log output is finished.
But that polish is left for later.

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Correct use of authentication by external_acl_type

The require_auth flag may NOT be altered by running code.
Especially not updated on any individual request status.

[Amos Jeffries <squid3_at_treenet.co.nz>] Remove duplicate basic auth authenticatestatedata

[Amos Jeffries <squid3_at_treenet.co.nz>] Unwind UserRequest child objects. Unify duplicate authenticateStateData code.

[Amos Jeffries <squid3_at_treenet.co.nz>] Add missing enums.h

[Amos Jeffries <squid3_at_treenet.co.nz>] Sync from HEAD

[Amos Jeffries <squid3_at_treenet.co.nz>] Several build and run issues found

[Amos Jeffries <squid3_at_treenet.co.nz>] Merge from trunk

[Amos Jeffries <squid3_at_treenet.co.nz>] Ref-count AuthScheme objects. Restructure the scheme-config relationship.

* Schemes are now global permanent objects describing the components
available. They hold the defaults for each auth mechanism (if any).

* Config are now temporary objects created by schemes and held in
Auth::TheConfig until no longer needed. They hold all current config
data about and auth mechanism.

TODO: ref-count the config items and clarify their relationship to
requests, connections, and user details.

[Amos Jeffries <squid3_at_treenet.co.nz>] Remove redundant user() functions

The child classes of AuthUserRequest turned out to have alternative
verions of user() set and get functions. These did the same operations
but stored the AuthUser class in different locations.
This makes user() always NULL for pointers to the parent object inside
the core authentication code. Regardess of whether an AuthUser was set.

Also digest auth had a completely alternative set of functions authUser()
to do user() operations on the parent object and locking. This has been
cleaned up.

[Amos Jeffries <squid3_at_treenet.co.nz>] Upgrade AuthUserRequest ref-counting

TODO:
Test auth still runs. Some problems were noted in conversion which affect
digest, NTLM, Negotiate AuthUser objects.
Notably that the virtual functions setting a custom field instead of the
parent objects _auth_user woudl result in teh *::Pointer having a NULL user()

Convert AuthUser, AuthScheme, AuthConfig to ref-counted as well.

[Automatic source maintenance <squidadm_at_squid-cache.org>] SourceFormat Enforcement

------------------------------------------
[...truncated 6732 lines...]
test -z "testHeaders" || rm -f testHeaders
rm -rf .libs _libs
test -z "libbase.la" || rm -f libbase.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in .
 rm -f tests/testAuth tests/testAuth
 rm -f tests/testACLMaxUserIP tests/testACLMaxUserIP
 rm -f tests/testBoilerplate tests/testBoilerplate
 rm -f tests/testCacheManager tests/testCacheManager
 rm -f tests/testDiskIO tests/testDiskIO
 rm -f tests/testEvent tests/testEvent
 rm -f tests/testEventLoop tests/testEventLoop
 rm -f tests/test_http_range tests/test_http_range
 rm -f tests/testHttpReply tests/testHttpReply
 rm -f tests/testHttpRequest tests/testHttpRequest
 rm -f tests/testStore tests/testStore
 rm -f tests/testString tests/testString
 rm -f tests/testURL tests/testURL
 rm -f tests/testUfs tests/testUfs
test -z "cf_gen_defines.cci cf_parser.cci err_type.cc globals.cc hier_code.cc icp_opcode.cc lookup_t.cc repl_modules.cc swap_log_op.cc squid.8 cf.data squid.conf.default squid.conf.documented DiskIO/DiskIOModules_gen.cc test_tools.cc *.a testHeaders" || rm -f cf_gen_defines.cci cf_parser.cci err_type.cc globals.cc hier_code.cc icp_opcode.cc lookup_t.cc repl_modules.cc swap_log_op.cc squid.8 cf.data squid.conf.default squid.conf.documented DiskIO/DiskIOModules_gen.cc test_tools.cc *.a testHeaders
 rm -f DiskIO/DiskDaemon/diskd DiskIO/DiskDaemon/diskd
 rm -f unlinkd unlinkd
rm -rf .libs _libs
test -z "libBlocking.a libDiskDaemon.a libDiskThreads.a" || rm -f libBlocking.a libDiskDaemon.a libDiskThreads.a
test -z "libsquid.la" || rm -f libsquid.la
rm -f "./so_locations"
 rm -f cf_gen cf_gen
 rm -f squid squid
rm -f *.o
rm -f DiskIO/AIO/AIODiskFile.o
rm -f DiskIO/AIO/AIODiskIOModule.o
rm -f DiskIO/AIO/AIODiskIOStrategy.o
rm -f DiskIO/AIO/aio_win32.o
rm -f DiskIO/Blocking/BlockingDiskIOModule.o
rm -f DiskIO/Blocking/BlockingFile.o
rm -f DiskIO/Blocking/BlockingIOStrategy.o
rm -f DiskIO/DiskDaemon/DiskDaemonDiskIOModule.o
rm -f DiskIO/DiskDaemon/DiskdFile.o
rm -f DiskIO/DiskDaemon/DiskdIOStrategy.o
rm -f DiskIO/DiskDaemon/diskd.o
rm -f DiskIO/DiskIOModule.o
rm -f DiskIO/DiskIOModules_gen.o
rm -f DiskIO/DiskThreads/DiskThreadsDiskFile.o
rm -f DiskIO/DiskThreads/DiskThreadsDiskIOModule.o
rm -f DiskIO/DiskThreads/DiskThreadsIOStrategy.o
rm -f DiskIO/DiskThreads/aiops.o
rm -f DiskIO/DiskThreads/aiops_win32.o
rm -f DiskIO/DiskThreads/async_io.o
rm -f DiskIO/ReadRequest.o
rm -f DiskIO/WriteRequest.o
rm -f tests/TestSwapDir.o
rm -f tests/stub_CommIO.o
rm -f tests/stub_DelayId.o
rm -f tests/stub_HelperChildConfig.o
rm -f tests/stub_HttpReply.o
rm -f tests/stub_HttpRequest.o
rm -f tests/stub_MemObject.o
rm -f tests/stub_StatHist.o
rm -f tests/stub_access_log.o
rm -f tests/stub_acl.o
rm -f tests/stub_cache_cf.o
rm -f tests/stub_cache_manager.o
rm -f tests/stub_client_side_request.o
rm -f tests/stub_comm.o
rm -f tests/stub_errorpage.o
rm -f tests/stub_fd.o
rm -f tests/stub_helper.o
rm -f tests/stub_http.o
rm -f tests/stub_internal.o
rm -f tests/stub_mime.o
rm -f tests/stub_store.o
rm -f tests/stub_store_client.o
rm -f tests/stub_store_rebuild.o
rm -f tests/stub_store_swapout.o
rm -f tests/stub_tools.o
rm -f tests/testACLMaxUserIP.o
rm -f tests/testAuth.o
rm -f tests/testBoilerplate.o
rm -f tests/testCacheManager.o
rm -f tests/testCoss.o
rm -f tests/testDiskIO.o
rm -f tests/testEvent.o
rm -f tests/testEventLoop.o
rm -f tests/testHttpReply.o
rm -f tests/testHttpRequest.o
rm -f tests/testHttpRequestMethod.o
rm -f tests/testMain.o
rm -f tests/testNull.o
rm -f tests/testStore.o
rm -f tests/testStoreController.o
rm -f tests/testStoreEntryStream.o
rm -f tests/testStoreHashIndex.o
rm -f tests/testStoreSupport.o
rm -f tests/testString.o
rm -f tests/testURL.o
rm -f tests/testURLScheme.o
rm -f tests/testUfs.o
rm -f tests/test_http_range.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f DiskIO/.deps/.dirstamp
rm -f DiskIO/.dirstamp
rm -f DiskIO/AIO/.deps/.dirstamp
rm -f DiskIO/AIO/.dirstamp
rm -f DiskIO/Blocking/.deps/.dirstamp
rm -f DiskIO/Blocking/.dirstamp
rm -f DiskIO/DiskDaemon/.deps/.dirstamp
rm -f DiskIO/DiskDaemon/.dirstamp
rm -f DiskIO/DiskThreads/.deps/.dirstamp
rm -f DiskIO/DiskThreads/.dirstamp
rm -f tests/.deps/.dirstamp
rm -f tests/.dirstamp
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps DiskIO/.deps DiskIO/AIO/.deps DiskIO/Blocking/.deps DiskIO/DiskDaemon/.deps DiskIO/DiskThreads/.deps tests/.deps
rm -f Makefile
Making distclean in scripts
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
rm -f libtool
rm -f Makefile
Making distclean in snmplib
rm -rf .libs _libs
test -z "libsnmp.a" || rm -f libsnmp.a
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in libltdl
test -z "libltdl.la libltdlc.la" || rm -f libltdl.la libltdlc.la
test -z "" || rm -f
rm -rf .libs _libs
test -z "libltdlc.la" || rm -f libltdlc.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f config.h stamp-h1
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno config.status.lineno
rm -f Makefile
Making distclean in lib
Making distclean in libTrie
Making distclean in test
 rm -f trie trie
rm -rf .libs _libs
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in src
rm -rf .libs _libs
test -z "libTrie.a" || rm -f libTrie.a
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in include
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f Makefile
Making distclean in .
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
rm -f config.h stamp-h1
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno configure.status.lineno
rm -f Makefile
Making distclean in .
 rm -f tests/testAll tests/testAll
test -z "testHeaders" || rm -f testHeaders
rm -rf .libs _libs
test -z "libmiscutil.a libntlmauth.a " || rm -f libmiscutil.a libntlmauth.a
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f tests/.dirstamp
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf .deps ./.deps
rm -f Makefile
Making distclean in compat
 rm -f testPreCompiler testPreCompiler
test -z "testHeaders" || rm -f testHeaders
rm -rf .libs _libs
test -z "libcompat.la" || rm -f libcompat.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo
rm -f *.tab.c
test -z "" || rm -f
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -rf ./.deps
rm -f Makefile
Making distclean in .
rm -rf .libs _libs
rm -f *.lo
test -z "" || rm -f
test -z "include/stamp-h include/stamp-h[0-9]*" || rm -f include/stamp-h include/stamp-h[0-9]*
rm -f include/autoconf.h include/stamp-h1
rm -f libtool
rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
rm -f config.status config.cache config.log configure.lineno configure.status.lineno
rm -f Makefile
ERROR: files left in build directory after distclean:
./src/auth/AuthType.cc
*** Error code 1

Stop in /home/hudson/workspace/3.HEAD-i386-OpenBSD-4.5/btlayer-00-default/squid-3.HEAD-BZR/_build (line 679 of Makefile).
*** Error code 1

Stop in /home/hudson/workspace/3.HEAD-i386-OpenBSD-4.5/btlayer-00-default (line 632 of Makefile).
buildtest.sh result is 1
BUILD: .././test-suite/buildtests/layer-00-default.opts
ERROR: files left in build directory after distclean:
*** Error code 1
*** Error code 1
Build FAILED.
Received on Wed Jun 02 2010 - 15:57:54 MDT

This archive was generated by hypermail 2.2.0 : Thu Jun 03 2010 - 12:00:11 MDT