1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00
Commit Graph

18 Commits

Author SHA1 Message Date
Rusty Russell
1f8b574adb talloc_stack: abort in developer me if no stackframe on talloc_tos()
Don't tolerate leaks in developer mode.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-07-18 15:07:27 +09:30
Rusty Russell
84fb37fe37 talloc_stack: report lazy freeing (panic if DEVELOPER).
talloc_stackframe() stacks, so if you forget to free one, the outer
one will free it.  However, it's not a good idea to rely too heavily
on this behaviour: it can lead to delays in the release of memory or
destructors.

I had an elaborate hack to make sure every talloc_stackframe() was
freed in the exact same function it was allocated, however all bugs it
caught were simply lazy freeing, so this patch just checks for that.

This doesn't check for stackframes we don't free up on exit: that would
be nice, but uncovers some uncomfortable (but probably harmless) cases.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-07-18 04:57:31 +09:30
Rusty Russell
f9b51ff33e talloc_stack: always include the location when creating a talloc_stackframe().
Much better for debugging.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-07-18 04:56:31 +09:30
Rusty Russell
311281c2c5 talloc_stack: handle more than one talloc_stackframe_pool()
The only reason we make one stackframe parent of the next is so we use
our parent's pool.  That doesn't make sense if we're a new pool, and
wouldn't work anyway.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2012-07-18 04:55:31 +09:30
Andrew Tridgell
b07e4933b7 talloc: added talloc_stackframe_exists()
This can be used to tell if a talloc stackframe is currently
available. Callers can use this to decide if they will use
talloc_tos() or instead use an alternative strategy. This gives us a
way to safely have calls to talloc_tos() in common code that may end
up in external libraries, as long as all talloc_tos() calls in these
pieces of common code check first that a stackframe is available.
2011-06-17 15:25:42 +10:00
Volker Lendecke
d097d9fb09 Use TALLOC_FREE in talloc_pop() 2010-03-21 17:12:23 +01:00
Volker Lendecke
0f3040a61f Use calloc instead of ZERO_STRUCTP in talloc_stackframe_create() 2010-03-21 17:12:23 +01:00
Volker Lendecke
6695b0e87d Trim an overlong line 2010-03-21 17:12:23 +01:00
Stefan Metzmacher
d23581b4d7 talloc_stack: reset stackframe pointers to NULL
This makes it easier to debug the code in future.

metze
2010-03-15 15:08:24 +01:00
Stefan Metzmacher
10ed809a1a talloc_stack: make sure we never let talloc_tos() return ts->talloc_stack[-1]
In smbd there's a small gab between TALLOC_FREE(frame); before
be call smbd_parent_loop() where we don't have a valid talloc stackframe.

smbd_parent_loop() calls talloc_stackframe() only within the while(1) loop.
As DEBUG(2,("waiting for connections")) uses talloc_tos() to construct
the time header for the debug message we crash on some systems.

metze
2010-03-15 15:08:23 +01:00
Derrell Lipman
045af600f2 Take advantage of the easier-to-use thread macros
- Now that we initialize for the non-thread-safe case in the macro, there's no
  need to do it here too.

Derrell
2009-05-13 14:37:28 -04:00
Derrell Lipman
e03b9ae609 Allow a parameter to smb_thread_once's initialization function
- This should make life easier for ourselves. We're no longer constrained to
  the semantics of pthread_once, so let's allow passing a parameter to the
  initialization function. Some of Samba's init functions return a
  value. Although I haven't searched, I suspect that some of the init
  functions require in input parameters. The parameter added here can be used
  for input, output, or both, as necessary... or ignored, as is now done in
  talloc_stackframe_init().

Derrell
2009-05-13 09:50:17 -04:00
Jeremy Allison
399c765538 Attempt to fix build farm on platforms where pthread_once_t is a struct.
Jeremy.
2009-04-20 04:00:06 -07:00
Jeremy Allison
3d2e95c296 Fix the pthread_once initialization issue. Make talloc_stackframe use
this.
Jeremy.
2009-04-20 03:04:42 -07:00
Jeremy Allison
8e06e945b6 Ensure a tls key is only generated once - wrap create & destroy in a mutex.
Change the function names to add _once to the tls_create & tls_destroy to
make this obvious.
Jeremy.
2009-04-14 15:19:39 -07:00
Jeremy Allison
27a3118bcf Make talloc_stack threadsafe using TLS. Volker please
check. Passes make test and basic valgrind testing.
Jeremy.
2009-04-14 12:23:22 -07:00
Jelmer Vernooij
fe36fe8c3e Use common net utility code (address and sockaddr manipulation). 2008-10-23 20:41:15 +02:00
Jelmer Vernooij
cf659fa4fe Import talloc_stack into util library. 2008-10-23 17:27:30 +02:00