[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-bugs] #11476 [Tor]: Try making all memory pool and freelist code off by default, or clear-on-alloc
#11476: Try making all memory pool and freelist code off by default, or clear-on-
alloc
------------------------+----------------------------------------------
Reporter: nickm | Owner: andrea
Type: defect | Status: needs_revision
Priority: normal | Milestone: Tor: 0.2.5.x-final
Component: Tor | Version:
Resolution: | Keywords: tor-relay, security, 025-triaged
Actual Points: | Parent ID:
Points: |
------------------------+----------------------------------------------
Comment (by andrea):
Replying to [comment:12 nickm]:
> > because mp_pool_get() takes a cell pool as an argument, so I'd also
have to leave 'static mp_pool_t *cell_pool = NULL;' in relay.c outside the
#ifdef if I were keeping the call to mp_pool_get() but making it wrap
tor_malloc_zero().
>
> That's not so bad IMO; you'd just need to have mp_pool_t be semantically
"This is a memory pool if ENABLE_MEMPOOLS is set; this is a placeholder
object if it isn't."
>
> > Counter-suggestion: replace mp_pool_get() calls in relay.c with
relay_alloc_cell() or something like that, which is #defined to either
mp_pool_get(cell_pool) or tor_malloc_zero() as appropriate?
>
> I think that approach is okay too. The thing I don't want to have happen
is multiple instances of
>
> {{{
> #ifdef ENABLE_MEMPOOLS
> foo();
> #else
> bar();
> #endif
> }}}
>
> scattered throughout the codebase. That's a recipe for hard-to-maintain
code IMO. Ideally, when there's an ENABLE_foo, its effects should be
isolated by a function abstraction at some level, though IMO the exact
level is not super critical.
Okay, fine by me.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/11476#comment:13>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs