[Swan-dev] Pluto memory consumption

Erik Andersson erik at ingate.com
Fri Mar 3 02:12:44 UTC 2017


Thanks Andrew!

I've re-built with your recent commits and it seems that your efforts 
have solved the issue.

I've run for a few hours and the memory consumption doesn't rise :)

Regards,

Erik

On 2017-03-02 22:30, Andrew Cagney wrote:
>> I didn't do any archaeology
>
> I think two things were at play.
>
> The first change:
>
> commit 02768e7cd76a465443f13f3cbf6864db268f0b52
> Date:   Mon Nov 12 21:18:54 2007 -0500
>
>     #845 - beginning of DH calculation and SKEYSEED derivation.
>
> would copy skeyseed into a wirechunk:
>
>     setwirechunk_fromchunk(skr->skeyseed, skeyseed, skr);
>
> but never copied the field back out.  This set the trap.
> (I suspect this was ok as deleting the wirechunk SKR would reclaim the memory).
>
> The second change:
>
> commit 944c9a31c1e4dff1ab92cdf9c85629b7270a6157
> Date:   Tue Feb 18 04:15:35 2014 -0500
>
>     smoother nss:
>     Many NSS pointers were passed through chunks making to code confusing
>     and brittle.  No longer.
>     A side-effect is that this change makes it harder to ditch NSS.
>
> replaced the wirechunk with individual pointer moves.  Since the old
> code didn't extract the field skeyseed, the new code didn't either;
> falling into the trap :-)
>
> I've pushed a fix.  For 3.19, something like:
>
> @@ -143,6 +142,7 @@ static void calc_skeyseed_v2(struct pcr_skeyid_q *skq,
>         PK11SymKey *finalkey = ikev2_ike_sa_keymat(skq->prf, skeyseed_k,
>                                                    ni, nr, spii, spir,
>                                                    total_keysize);
> +       free_any_symkey("skeyseed_", &skeyseed_k);
>
>         size_t next_byte = 0;
>
> might be sufficient (but I've not tested it).
>
> Andrew
>


More information about the Swan-dev mailing list