I've released version 1.2, which fixes (hopefully for real this time) that
memory leak.
Non-developers should stop reading here. :-)
I'm trying to convert l7 to using slab caches so that this sort of thing
is easier to track down. (Also, it was recommended a long time ago by the
Netfilter people. Should be more efficient, yadda yadda.) This looks
easy, but I'm failing to get it to work. Specifically, I can make a
cache, allocate memory in the cache, and use that memory, but freeing it
is trouble. Depending on the situation, the app_data either gets freed in
ipt_layer7.c after identification, or ip_conntrack_core.c when the
conntrack is destroyed. The first case works fine, but the second crashes
the machine quite reliably.
I don't _think_ that this is due to a race condition or anything subtle
like that, because it's not probabilistic. I'm guessing it's some
boneheaded thing I did, like not typing a * or an & somewhere, but darned
if I can find it. I'm attaching a patch that represents my latest
attempt. Anyone want to hunt down the problem? Thanks.
-matthew
|