|
|
Message-ID: <000a90f7758ee3744476f488fc7e79b5@smtp.hushmail.com>
Date: Mon, 16 Mar 2015 17:58:05 +0100
From: magnum <john.magnum@...hmail.com>
To: john-dev@...ts.openwall.com
Subject: Re: [GSoC] building JtR for MIC
On 2015-03-15 19:14, Solar Designer wrote:
> On Sun, Mar 15, 2015 at 01:12:48PM +0800, Lei Zhang wrote:
>> It got killed again when running smchapv2-naive. I guess it ran out of memory again?
>
> Perhaps. Can you try running the mschapv2-naive self-test on its own,
> not along with the rest? Something like:
>
> ./john --test --format=mschapv2-naive
>
> If it runs fine, then the problem was likely caused by memory allocation
> by the formats that were tested previously. Some of them intentionally
> allocate memory such that it can't be freed. This lowers overhead for
> when john is run for cracking, with just one specific format, but it
> results in increased total memory usage for a many-formats self-test.
> We should only be making such non-freed allocations for things that are
> small. For larger allocations, formats should free the memory in their
> done() methods. Perhaps some formats allocate "too much" memory (at
> least when the number of threads is this large) and don't free it - and
> perhaps you should identify them and change them to free the memory.
This has been on my to-do list for some time. The "worst" formats use an
OMP_SCALE of eg. 128K. Even at just 16K and with a PLAINTEXT_LENGTH of
125, the key buffer alone is nearly half a gigabyte for 240 threads.
I just committed fixes for a good number of the worst offenders.
Hopefully this will fix the problem already but we should fix some more
later. And Lei, if you see a particular format still causing troubles,
feel free to fix that and make a PR.
Basically the below is what's involved for each format:
commit db1f7e7d6a5b0c75baf878f810f6da1bbb0dc79b
Author: magnum <john.magnum@...hmail.com>
Date: Mon Mar 16 15:51:13 2015 +0100
Use malloc/free for buffers; Yet another bunch of formats.
diff --git a/src/sapH_fmt_plug.c b/src/sapH_fmt_plug.c
index a260cbc..f76859a 100644
--- a/src/sapH_fmt_plug.c
+++ b/src/sapH_fmt_plug.c
@@ -154,8 +154,16 @@ static void init(struct fmt_main *self)
omp_t *= OMP_SCALE;
self->params.max_keys_per_crypt *= omp_t;
#endif
- saved_plain = mem_calloc_tiny(sizeof(*saved_plain) *
self->params.max_keys_per_crypt, MEM_ALIGN_NONE);
- crypt_key = mem_calloc_tiny(sizeof(*crypt_key) *
self->params.max_keys_per_crypt, MEM_ALIGN_WORD);
+ saved_plain = mem_calloc(self->params.max_keys_per_crypt,
+ sizeof(*saved_plain));
+ crypt_key = mem_calloc(self->params.max_keys_per_crypt,
+ sizeof(*crypt_key));
+}
+
+static void done()
+{
+ MEM_FREE(crypt_key);
+ MEM_FREE(saved_plain);
}
static int valid(char *ciphertext, struct fmt_main *self)
@@ -658,7 +666,7 @@ struct fmt_main fmt_sapH = {
tests
}, {
init,
- fmt_default_done,
+ done,
fmt_default_reset,
fmt_default_prepare,
valid,
magnum
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.