On 2012-10-14 at 23:50 +0100, Jeremy Harris wrote:
> Any developers suffering like I was with odd crash issues
> might like to look into this possibility.  I'm not sure how
> well the restrictions on memory use in exim are documented,
> but it wasn't one I'd realised.
> 
> If your code does any allocation, which pretty much means
> any variable- or string-handling, and expects the results
> to stay around (like in a variable):   check the call-chains
> leading to your code for use of store_reset().  If one is done
> it sets you up for a much-later alloc to hand out your memory
> again, hence corruption.

You can also use store_get_perm(), or temporarily set "store_pool =
POOL_PERM" before grabbing the data with the normal functions.

Bear in mind that delivery, etc, will take place from a different
process, which reads data off the spool, so the spool_write_header()
calls protect a lot of data for you.  I think that's the reason we're
not bitten by the authenticators not storing the auth vars in permanent
store, and so that's not actually a bug.

-Phil

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to