Commit Graph

139 Commits

Author SHA1 Message Date
Anders Broman db64e65ec2 From Jakub Zawadzki:
mmap() actually when fail returns MAP_FAILED (-1) not NULL
Part of Bug:
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4140

svn path=/trunk/; revision=31593
2010-01-20 20:26:01 +00:00
Anders Broman 27bc3e2211 From Jakub Zawadzki:
Fix some bugs after merge.
Part of Bug:
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4140

svn path=/trunk/; revision=31586
2010-01-20 06:37:56 +00:00
Ronnie Sahlberg f817636cc6 remove an unusued variable
svn path=/trunk/; revision=31582
2010-01-20 03:55:03 +00:00
Anders Broman 2183430a29 From Jakub Zawadzki:
Embed canary list inside chunk data.
Part of Bug:
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4140

svn path=/trunk/; revision=31577
2010-01-19 21:28:48 +00:00
Anders Broman 46501fd7f6 From Jakub Zawadzki:
Make emem_create_chunk() a function.
Part of Bug:
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4140

svn path=/trunk/; revision=31576
2010-01-19 20:54:27 +00:00
Anders Broman 8e276fa139 From Jakub Zawadzki:
Cleanup emem_create_chunk() - move common code outside #ifdef's
Part of Bug:
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4140

svn path=/trunk/; revision=31575
2010-01-19 20:53:02 +00:00
Gerald Combs 9417a7c86f From Jakub Zawadzki via bug 4274:
Switch back to checking size instead of asize in emem_alloc_chunk. Make
sure we don't try to cross the streams by allocating a negative amount
of memory in the LTP dissector.

svn path=/trunk/; revision=31132
2009-11-30 17:31:13 +00:00
Stig Bjørlykke d577ca0fa7 Guard #include <sys/types.h> with HAVE_SYS_TYPES_H.
svn path=/trunk/; revision=31053
2009-11-23 18:47:52 +00:00
Gerald Combs 483711e3f5 Add a comment about using memcpy for scrubbing.
svn path=/trunk/; revision=30680
2009-10-23 21:07:28 +00:00
Jeff Morriss 78318b32ee Add emem_init() which initializes both the ep_ and se_ allocators; have all
callers use that instead of initializing each allocator individually.

svn path=/trunk/; revision=30646
2009-10-20 17:43:05 +00:00
Jeff Morriss 38cb8e82c3 Don't call xx_init_chunk() in ep_free_all() and se_free_all() if we're not
using chunks.  With this change, xx_init_chunk() are only called once at
startup (as their comments imply).

Instead, set free_list to NULL in emem_free_all() (if we're not using chunks).

svn path=/trunk/; revision=30644
2009-10-20 17:16:40 +00:00
Jeff Morriss ab13546f71 From Jakub Zawadzki via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4140 :
There is emem_header_t struct, so IMHO is better to use struct instead of
global variables.

Split emem_alloc() into two functions: emem_alloc_chunk and emem_alloc_glib.
Current allocator is available in emem_header_t.memory_alloc

It should be easier to develop new memory allocator and maintain current.
It might also give some speedup (we don't need to check mem->debug_use_chunks
every time :)

From me:

Initialize emem_header_t.trees.  Some indentation cleanup.

svn path=/trunk/; revision=30624
2009-10-19 22:31:08 +00:00
Jeff Morriss c293e4d024 Introduce an optional (ep_ and se_) memory scrubber. When activated (export
WIRESHARK_DEBUG_SCRUB_MEMORY to turn it on) this function initializes all
allocated memory to 0xBADDCAFE and all freed memory to 0xDEADBEEF.  (Of course
the allocation functions like ep_alloc0() re-initialize the allocated memory
back to 0.)

svn path=/trunk/; revision=30579
2009-10-16 21:36:42 +00:00
Kovarththanan Rajaratnam cc6d443867 Use G_MEM_ALIGN when we have to determine the amount of padding needed instead of hard coding it to 8 bytes alignment.
Before:

Allocation distribution (sizes include canaries):
size <    32:   454120
size <    64:   401506

After:

Allocation distribution (sizes include canaries):
size <    32:   457281
size <    64:   398345

svn path=/trunk/; revision=30496
2009-10-11 08:20:40 +00:00
Kovarththanan Rajaratnam 5ea31fa450 Rename emem_canary => emem_canary_init to make it clear that the function initializes the canary
svn path=/trunk/; revision=30493
2009-10-11 07:15:15 +00:00
Kovarththanan Rajaratnam 876f39f5a3 Only check to see if 'free_list' is empty when we've just moved over a chunk to the 'used_list'
svn path=/trunk/; revision=30492
2009-10-11 07:07:05 +00:00
Kovarththanan Rajaratnam 4255bd2e53 Tighten scope of some variables in emem_alloc()
svn path=/trunk/; revision=30491
2009-10-11 06:34:02 +00:00
Kovarththanan Rajaratnam 932f307117 Change EMEM_PACKET_CHUNK_SIZE to (10 * 1024 * 1024) to make it easier to see that we allocate in 10 MB chunks.
svn path=/trunk/; revision=30490
2009-10-11 06:26:24 +00:00
Kovarththanan Rajaratnam c394047159 Use g_strlcpy instead of providing our own string copy implementation
svn path=/trunk/; revision=30488
2009-10-11 06:04:58 +00:00
Kovarththanan Rajaratnam b5ce884cf4 Use memcpy when we already know the length of the string
svn path=/trunk/; revision=30487
2009-10-11 05:53:10 +00:00
Jeff Morriss 325ce121d8 Print statistics to stderr so we can see (only) them when using tshark.
svn path=/trunk/; revision=30452
2009-10-09 21:27:46 +00:00
Jeff Morriss 3cf628c417 Unify the stats output regardless of whether we're using canaries or not. Fix some math/calculation issues (including taking the guard pages into account when calculating waste). Since we've already counted the SE allocations for the distribution display, use that (instead of the canaries) to count how many allocations we've had.
svn path=/trunk/; revision=30449
2009-10-09 21:00:00 +00:00
Kovarththanan Rajaratnam a8ca8d1815 Call emem_canary() immediately
svn path=/trunk/; revision=30403
2009-10-08 14:48:43 +00:00
Kovarththanan Rajaratnam 03f934d183 From Harald Welte via bug 4106:
Fix 'cast from pointer to integer of different size'

svn path=/trunk/; revision=30402
2009-10-08 14:40:23 +00:00
Kovarththanan Rajaratnam ef48a237ed Remove debug g_warning()
svn path=/trunk/; revision=30399
2009-10-08 13:24:03 +00:00
Anders Broman 2e3bc6bcc2 Dont use canaries for SE allocated memory as a default the owerhead
is to big when allocating lot's of memory. EP memory does not suffer as much as we seems to only allocate one chunk for EP memory.

svn path=/trunk/; revision=30397
2009-10-08 11:46:15 +00:00
Jeff Morriss 6a7c00894d Add some SE allocation statistics (if SHOW_MEM_STATS is defined).
Add print_alloc_stats() will show some (hopefully useful) statistics about the
memory we have allocated, the average allocation size, the amount of
overhead/waste, etc.

svn path=/trunk/; revision=30371
2009-10-06 16:20:26 +00:00
Anders Broman 570208780b Increase EMEM_ALLOCS_PER_CHUNK to avoid memory waist.
svn path=/trunk/; revision=30356
2009-10-06 10:10:33 +00:00
Kovarththanan Rajaratnam 978bd4982d Use g_free() (should have been part of r30342)
svn path=/trunk/; revision=30347
2009-10-05 19:18:09 +00:00
Kovarththanan Rajaratnam e567d96a93 Use g_malloc()
svn path=/trunk/; revision=30342
2009-10-05 18:20:38 +00:00
Stig Bjørlykke e362a37cbc Ensure we don't dereference a null pointer.
Made emem_canary() static.

svn path=/trunk/; revision=30186
2009-09-29 06:50:35 +00:00
Kovarththanan Rajaratnam 7ba4fb4ba8 Make sure that we also traverse the free_list while looking for valid pointers
svn path=/trunk/; revision=30113
2009-09-24 13:37:02 +00:00
Kovarththanan Rajaratnam 8f0d93fb12 Add unsigned int type cast
svn path=/trunk/; revision=30037
2009-09-21 14:01:30 +00:00
Kovarththanan Rajaratnam 859bd0f8b2 Make sure that we track the amount allocated when we're doling out memory from the system pool. The verify pointer stuff should should now work with WIRESHARK_DEBUG_EP_NO_CHUNKS=1 and WIRESHARK_DEBUG_SE_NO_CHUNKS=1
svn path=/trunk/; revision=30032
2009-09-21 10:44:59 +00:00
Kovarththanan Rajaratnam 1a61b42e8a Add ep_verify_pointer()/se_verify_pointer() which checks whether the given pointer belongs in the seasonal/ephemeral pool.
svn path=/trunk/; revision=30011
2009-09-20 12:02:40 +00:00
Kovarththanan Rajaratnam 2d37d1816d Remove unused/dead code
svn path=/trunk/; revision=30009
2009-09-20 09:32:52 +00:00
Kovarththanan Rajaratnam 42b01b61ab Make se_trees static in emem.c
svn path=/trunk/; revision=30008
2009-09-20 09:28:55 +00:00
Kovarththanan Rajaratnam e6f7a87937 Use g_new()
svn path=/trunk/; revision=30005
2009-09-20 09:03:02 +00:00
Kovarththanan Rajaratnam b91827f5a0 Avoid calling emem_create_chunk() needlessly
svn path=/trunk/; revision=29734
2009-09-06 08:10:12 +00:00
Jörg Mayer a3c38e1057 Include "proto.h" instead of <proto.h>
svn path=/trunk/; revision=29694
2009-09-04 11:48:04 +00:00
Kovarththanan Rajaratnam e0e33ca74b We now expose the following environment variables:
* WIRESHARK_DEBUG_EP_NO_CHUNKS
 * WIRESHARK_DEBUG_SE_NO_CHUNKS
 * WIRESHARK_DEBUG_EP_NO_CANARY
 * WIRESHARK_DEBUG_SE_NO_CANARY

This allows us to enable/disable memory chunks and canaries at runtime _without_ needing to recompile.

svn path=/trunk/; revision=29375
2009-08-11 09:24:56 +00:00
Kovarththanan Rajaratnam 7702b8766d Use ! defined(EP_DEBUG_FREE) && ! defined(SE_DEBUG_FREE) to guard canary code to get things compiling after r29358.
svn path=/trunk/; revision=29365
2009-08-10 16:36:44 +00:00
Kovarththanan Rajaratnam 3f4f8b0b94 Add unsigned int typecast
svn path=/trunk/; revision=29361
2009-08-09 21:10:04 +00:00
Kovarththanan Rajaratnam 39b1eb1015 g_error() requires a string literal.
svn path=/trunk/; revision=29360
2009-08-09 20:28:38 +00:00
Kovarththanan Rajaratnam 50c9dbca26 Split common parts of ep_free_all and se_free_all into emem_free_all.
svn path=/trunk/; revision=29359
2009-08-09 20:10:19 +00:00
Kovarththanan Rajaratnam ecb5ee8e91 Split common parts of se_alloc and ep_alloc into emem_alloc.
svn path=/trunk/; revision=29358
2009-08-09 19:23:13 +00:00
Bill Meier fdda6e8778 ep_strbuf: fix some bugs and additional changes
-Bugs
  * str->len not set correctly in some cases;
  * trailing '\0' not always accounted for;
  * (issues relating to determining when & how much 
     to expand string buffer).
-Other
  * Change append, append_c, truncate to return 
    pointer to ep_strbuf (similar to the corresponding
    GString functions);
  * Rename certain variables to clarify usage (as I understand
    the intended usage);
  * ep_strbuf_grow: use current allocated length and not current
    string length as the starting point;
  * Optimizations;
  * Add some additional comments to emem.h ep_strbuf section

  * Use consistent indentation throughout emem.c;

svn path=/trunk/; revision=28044
2009-04-14 14:08:19 +00:00
Jörg Mayer 69cc30c611 Another patch to sqelch warnings about asserts in g_strlcpy with NULL source pointer
svn path=/trunk/; revision=27985
2009-04-07 16:43:15 +00:00
Gerald Combs 6348c17c16 size_t fixes.
svn path=/trunk/; revision=27984
2009-04-07 16:36:52 +00:00
Jörg Mayer 409e59c32a Don't crash on linux:
strlen(NULL) isn't an acceptable call.

svn path=/trunk/; revision=27948
2009-04-03 17:32:32 +00:00