Commit Graph

449 Commits

Author SHA1 Message Date
Ulrich Drepper bec466d922 Fix race in corruption check.
With atomic fastbins the checks performed can race with concurrent
modifications of the arena.  If we detect a problem re-do the test
after getting the lock.
2009-07-16 09:54:34 -07:00
Jakub Jelinek bea0ac1d87 Use rel semantics of cas instead of acq semantics with full barrier before it in _int_free
The following patch fixes catomic_compare_and_exchange_*_rel definitions
(which were never used and weren't correct) and uses
catomic_compare_and_exchange_val_rel in _int_free.  Comparing to the
pre-2009-07-02 --enable-experimental-malloc state the generated code should
be identical on all arches other than ppc/ppc64 and on ppc/ppc64 should use
lwsync instead of isync barrier.
2009-07-16 07:24:50 -07:00
Ulrich Drepper 6cbbaa50aa Fix possible race when freeing object in fast bin list. 2009-07-02 03:30:55 -07:00
Ulrich Drepper f6887a0d9a Add some more tests to malloc to detect corruptions. 2009-06-18 22:37:31 -07:00
Andreas Schwab f60ddf9bf7 Don't treat bug reporting message as a format string. 2009-06-16 20:34:55 -07:00
Ulrich Drepper 0588a9cb62 * malloc/malloc.c (malloc_info): Output address space information. 2009-04-18 08:44:10 +00:00
Ulrich Drepper da2d2fb68d * malloc/malloc.c (malloc_info): Also output system memory information. 2009-04-18 05:14:52 +00:00
Ulrich Drepper acdf23097f (top_check): Force hook value into register. 2009-04-17 17:55:06 +00:00
Ulrich Drepper df77455c4b [BZ #9957]
2009-04-16  Ulrich Drepper  <drepper@redhat.com>
	[BZ #9957]
	* malloc/malloc.c (force_reg): Define.
	(sYSMALLOc): Load hook variable into variable
	before test and force into register.
	(sYSTRIm): Likewise.
	(public_mALLOc): Force hook value into register.
	(public_fREe): Likewise.
	(public_rEALLOc): Likewise.
	(public_mEMALIGn): Likewise.
	(public_vALLOc): Likewise.
	(public_pVALLOc): Likewise.
	(public_cALLOc): Likewise.
	(__posix_memalign): Likewise.
	* malloc/arena.c (ptmalloc_init): Load hook variable into variable
	before test and force into register.
	* malloc/hooks.c (top_check): Likewise.
	(public_s_ET_STATe): Pretty printing.

	* resolv/res_send.c (send_dg): Don't just ignore the result we got
	in case we only receive one reply in single-request mode.
2009-04-16 21:22:16 +00:00
Ulrich Drepper bb06654506 * malloc/malloc.c (malloc_info): New function.
* malloc/malloc.h: Declare it.
	* malloc/Versions: Export malloc_info for GLIBC_2.10.

	* resolv/nss_dns/dns-host.c (getanswer_r): Use strcasecmp
2009-04-09 05:45:42 +00:00
Ulrich Drepper 4c8b8cc332 * malloc/malloc.c (_int_realloc): Add parameter with old block
size.  Remove duplicated test.  Don't handle mmap'ed blocks here.
	Adjust all callers.
	* malloc/hooks.c (realloc_check): Adjust _int_realloc call.
2009-04-08 18:00:34 +00:00
Ulrich Drepper 425ce2edb9 * config.h.in (USE_MULTIARCH): Define.
* configure.in: Handle --enable-multi-arch.
	* elf/dl-runtime.c (_dl_fixup): Handle STT_GNU_IFUNC.
	(_dl_fixup_profile): Likewise.
	* elf/do-lookup.c (dl_lookup_x): Likewise.
	* sysdeps/x86_64/dl-machine.h: Handle STT_GNU_IFUNC.
	* elf/elf.h (STT_GNU_IFUNC): Define.
	* include/libc-symbols.h (libc_ifunc): Define.
	* sysdeps/x86_64/cacheinfo.c: If USE_MULTIARCH is defined, use the
	framework in init-arch.h to get CPUID values.
	* sysdeps/x86_64/multiarch/Makefile: New file.
	* sysdeps/x86_64/multiarch/init-arch.c: New file.
	* sysdeps/x86_64/multiarch/init-arch.h: New file.
	* sysdeps/x86_64/multiarch/sched_cpucount.c: New file.

	* config.make.in (experimental-malloc): Define.
	* configure.in: Handle --enable-experimental-malloc.
	* malloc/Makefile: Handle experimental-malloc flag.
	* malloc/malloc.c: Implement PER_THREAD and ATOMIC_FASTBINS features.
	* malloc/arena.c: Likewise.
	* malloc/hooks.c: Likewise.
	* malloc/malloc.h: Define M_ARENA_TEST and M_ARENA_MAX.
2009-03-13 23:53:18 +00:00
Jakub Jelinek d82a27f841 * stdlib/monetary.h: Uglify function parameter names.
* sunrpc/rpc/pmap_clnt.h: Likewise. 
* sunrpc/rpc/svc.h: Likewise. 
* sunrpc/rpc/xdr.h: Likewise. 
* sunrpc/rpc/clnt.h: Likewise. 
* resolv/netdb.h: Likewise. 
* resolv/arpa/nameser.h: Likewise. 
* resolv/resolv.h: Likewise. 
* argp/argp.h: Likewise. 
* locale/langinfo.h: Likewise. 
* io/sys/stat.h: Likewise. 
* posix/spawn.h: Likewise. 
* nis/rpcsvc/nislib.h: Likewise. 
* malloc/obstack.h: Likewise. 
* sysdeps/ia64/bits/link.h: Likewise. 
* sysdeps/i386/bits/link.h: Likewise. 
* sysdeps/s390/bits/link.h: Likewise. 
* sysdeps/powerpc/bits/link.h: Likewise. 
* sysdeps/x86_64/bits/link.h: Likewise. 
* sysdeps/sparc/bits/link.h: Likewise. 
* sysdeps/sh/bits/link.h: Likewise. 
* sysdeps/unix/sysv/linux/i386/sys/io.h: Likewise. 
* sysdeps/unix/sysv/linux/x86_64/sys/io.h: Likewise. 
* sysdeps/unix/sysv/linux/sparc/sys/eventfd.h: Likewise. 
* sysdeps/unix/sysv/linux/sys/eventfd.h: Likewise.
2009-02-16  Jakub Jelinek  <jakub@redhat.com>

	* stdlib/monetary.h: Uglify function parameter names.
	* sunrpc/rpc/pmap_clnt.h: Likewise.
	* sunrpc/rpc/svc.h: Likewise.
	* sunrpc/rpc/xdr.h: Likewise.
	* sunrpc/rpc/clnt.h: Likewise.
	* resolv/netdb.h: Likewise.
	* resolv/arpa/nameser.h: Likewise.
	* resolv/resolv.h: Likewise.
	* argp/argp.h: Likewise.
	* locale/langinfo.h: Likewise.
	* io/sys/stat.h: Likewise.
	* posix/spawn.h: Likewise.
	* nis/rpcsvc/nislib.h: Likewise.
	* malloc/obstack.h: Likewise.
	* sysdeps/ia64/bits/link.h: Likewise.
	* sysdeps/i386/bits/link.h: Likewise.
	* sysdeps/s390/bits/link.h: Likewise.
	* sysdeps/powerpc/bits/link.h: Likewise.
	* sysdeps/x86_64/bits/link.h: Likewise.
	* sysdeps/sparc/bits/link.h: Likewise.
	* sysdeps/sh/bits/link.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/sys/io.h: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sys/io.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sys/eventfd.h: Likewise.
	* sysdeps/unix/sysv/linux/sys/eventfd.h: Likewise.
2009-02-16 21:00:15 +00:00
Ulrich Drepper 6dd6a580df (_int_realloc): Likewise. Third argument is now padded size 2009-02-07 22:49:34 +00:00
Ulrich Drepper 78ac92ad8d * malloc/malloc.c (_int_free): Second argument is now mchunkptr.
Change all callers.
	(_int_realloc): Likewise.
	All _int_* functions are now static.
	* malloc/hooks.c: Change all callers to _int_free and _int_realloc.
	* malloc/arena.c: Likewise.
	* include/malloc.h: Remove now unnecessary declarations of the _int_*
	functions.
2009-02-07 22:01:49 +00:00
Ulrich Drepper bfacf1af1a * malloc/malloc.c: Add branch prediction for use of the hooks. 2009-02-07 19:05:28 +00:00
Ulrich Drepper cbbcaf2369 * debug/xtrace.sh: Unify translatable messages.
* elf/ldd.bash.in: Likewise.
	* elf/sprof.c: Likewise.
	* locale/programs/locale.c: Likewise.
	* malloc/memusage.sh: Likewise.
	* nss/getent.c: Likewise.

2009-02-06  Joseph Myers  <joseph@codesourcery.com>

	* debug/pcprofiledump.c (print_version,
	argp_program_version_hook): New function.
	* elf/ldconfig.c (more_help): New function.
	(argp): Use it.
	* elf/sln.c (usage): New function.
	(main): Support --help and --version.
	* malloc/memusagestat.c (print_version): New function.
	(argp_program_version_hook): New variable.
	* nscd/nscd.c (more_help): New function.
	(argp): Use it.
	* posix/getconf.c (main): Send --version output to stdout.
	Support --help.
	* sunrpc/rpc_main.c (usage, options_usage): Take STREAM and STATUS
	arguments.  All callers changed.
	(print_version): New function.
	(parseargs): Support --help and --version.
	* sunrpc/rpcinfo.c (usage): Take STREAM argument.  All callers
	changed.
	(print_version): New function.
	(main): Use getopt_long.  Support --help and --version.
	* sysdeps/unix/sysv/linux/lddlibc4.c (main): Support --help and
	--version.

2009-02-06  Ulrich Drepper  <drepper@redhat.com>
2009-02-06 20:13:07 +00:00
Ulrich Drepper e2e390fad8 * malloc/memusage.c (DEFAULT_BUFFER_SIZE): Change to 32768.
(update_data): Fix handling of wrapping back
2009-02-06 18:27:08 +00:00
Ulrich Drepper c3ab42a82d * malloc/memusage.c (update_data): Fix handling of wrapping back
to the beginning of the buffer.
2009-02-06 18:24:23 +00:00
Ulrich Drepper 1fdd89a78d * malloc/malloc.c (sYSMALLOc): Don't use assert when detecting
manipulated brk, use malloc_printerr.
	* misc/sbrk.c (__sbrk): Better error handling for nonsense
	requests.
2009-01-30 17:47:23 +00:00
Ulrich Drepper d36ad87147 * posix/getconf.c: Update copyright year.
* nss/getent.c: Likewise.
	* iconv/iconvconfig.c: Likewise.
	* iconv/iconv_prog.c: Likewise.
	* elf/ldconfig.c: Likewise.
	* catgets/gencat.c: Likewise.
	* csu/version.c: Likewise.
	* elf/ldd.bash.in: Likewise.
	* elf/sprof.c (print_version): Likewise.
	* locale/programs/locale.c: Likewise.
	* locale/programs/localedef.c: Likewise.
	* nscd/nscd.c (print_version): Likewise.
	* debug/xtrace.sh: Likewise.
	* malloc/memusage.sh: Likewise.
	* malloc/mtrace.pl: Likewise.
	* debug/catchsegv.sh: Likewise.
2009-01-02 08:47:18 +00:00
Ulrich Drepper 486bdb8863 * malloc/malloc.c (public_rEALLOc): When new arena is used, copy
really all bytes.  Patch by Denys Vlasenko <dvlasenk@redhat.com>.
2008-11-03 08:07:39 +00:00
Ulrich Drepper dba385512d (public_vALLOc): Try other arenas in case _int_valloc fails. (public_pVALLOc): Likewise. 2008-09-12 18:18:25 +00:00
Ulrich Drepper 72112b0cb4 * malloc/mtrace.c (mtrace): Use 'e' flag in fopen call. Drop
F_SETFD use if we know fopen set the flag.
2008-07-26 22:43:16 +00:00
Ulrich Drepper 231e783524 (__malloc_check_init): Remove printf. 2008-07-15 17:16:07 +00:00
Jakub Jelinek ae39e102cb * malloc/mtrace.pl: Use $@ instead of $* to keep perl 5.10 quiet.
2008-04-07  Jakub Jelinek  <jakub@redhat.com>

	* malloc/mtrace.pl: Use $@ instead of $* to keep perl 5.10 quiet.
2008-04-07 14:45:18 +00:00
Ulrich Drepper c958a6a4e5 [BZ #5736]
* malloc/malloc.c: Fix typo in comment.
2008-03-04 18:36:27 +00:00
Ulrich Drepper ab355d9aa5 * pthread-errnos.sym: Add EOVERFLOW.
* sysdeps/unix/sysv/linux/structsem.sym: Add SEM_VALUE_MAX.
	* sysdeps/unix/sysv/linux/sem_post.c: Don't overflow value field.
	* sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
2008-01-10 18:34:43 +00:00
Ulrich Drepper f6bacb8ef4 [BZ #5541]
* sunrpc/rpc_thread.c (__rpc_thread_destroy): Also free xports and
	pollfd structures.
	Patch by André Cruz.
2008-01-09 21:52:40 +00:00
Ulrich Drepper b34437015b [BZ #5553]
2008-01-09  Ulrich Drepper  <drepper@redhat.com>
	[BZ #5553]
	* malloc/malloc.c (public_mALLOc): Set ar_ptr when trying main_arena.
	(public_mEMALIGn): Likewise.
	Patch mostly by Daniel Jacobowitz.
2008-01-09 20:35:03 +00:00
Ulrich Drepper f4a1363eb3 * posix/getconf.c: Update copyright year.
* nss/getent.c: Likewise.
	* iconv/iconvconfig.c: Likewise.
	* iconv/iconv_prog.c: Likewise.
	* elf/ldconfig.c: Likewise.
	* catgets/gencat.c: Likewise.
	* csu/version.c: Likewise.
	* elf/ldd.bash.in: Likewise.
	* elf/sprof.c (print_version): Likewise.
	* locale/programs/locale.c: Likewise.
	* locale/programs/localedef.c: Likewise.
	* nscd/nscd.c (print_version): Likewise.
	* debug/xtrace.sh: Likewise.
	* malloc/memusage.sh: Likewise.
	* malloc/mtrace.pl: Likewise.
	* debug/catchsegv.sh: Likewise.
2008-01-02 19:26:03 +00:00
Ulrich Drepper 4cd4c5d6a2 * malloc/malloc.c (public_cALLOc): For arena other than
main_arena, count all bytes inside the mprotect_size range of the
	heap as uninitialized.
2007-12-17 18:44:04 +00:00
Ulrich Drepper be8c1500c7 * malloc/tst-trim1.c: New file.
* malloc/Makefile (tests): Add tst-trim1.
2007-12-16 22:57:57 +00:00
Ulrich Drepper 68631c8eb9 * malloc/malloc.c (public_mTRIm): Iterate over all arenas and call
mTRIm for all of them.
	(mTRIm): Additionally iterate over all free blocks and use madvise
	to free memory for all those blocks which contain at least one
	memory page.

	* malloc/malloc.c (do_check_malloc_state): Minimal cleanups.
2007-12-16 22:53:08 +00:00
Ulrich Drepper cbf5760e62 * malloc/arena.c (grow_heap): Split out code to shrink heap into...
(shrink_heap): ... this new function.
	(heap_trim): Call shrink_heap instead of grow_heap.
2007-12-12 00:11:49 +00:00
Ulrich Drepper 17edb30c62 * malloc/malloc.c (_int_malloc): sYSMALLOc might fail, in this
case don't call alloc_perturb.
2007-12-11 23:46:43 +00:00
Ulrich Drepper 666aa0201b * malloc/arena.c [!NO_THREADS]: Use ATFORK_MEM if defined. 2007-10-28 00:59:34 +00:00
Ulrich Drepper 68f3802dfa [BZ #4941]
* locales/oc_FR: Fix Thursday abday and August mon and abmon data.
2007-10-02 04:19:37 +00:00
Ulrich Drepper 1c3e748ef3 [BZ #4792]
* stdlib/stdlib.h (realloc): Remove __attribute_malloc__.
	* malloc/malloc.h (realloc): Likewise.

2007-07-16  Jakub Jelinek  <jakub@redhat.com>
2007-07-19 17:05:14 +00:00
Roland McGrath 2e2efe652a * elf/ldconfig.c: Allow GPLv2 or any later version.
* elf/readlib.c: Likewise.
	* elf/chroot_canon.c: Likewise.
	* elf/cache.c: Likewise.
	* nscd/mem.c: Likewise.
	* nscd/getpwuid_r.c: Likewise.
	* nscd/grpcache.c: Likewise.
	* nscd/aicache.c: Likewise.
	* nscd/getsrvbynm_r.c: Likewise.
	* nscd/nscd.c: Likewise.
	* nscd/servicescache.c: Likewise.
	* nscd/getsrvbypt_r.c: Likewise.
	* nscd/initgrcache.c: Likewise.
	* nscd/gethstbyad_r.c: Likewise.
	* nscd/gethstbynm2_r.c: Likewise.
	* nscd/getgrnam_r.c: Likewise.
	* nscd/nscd_setup_thread.c: Likewise.
	* nscd/getpwnam_r.c: Likewise.
	* nscd/gai.c: Likewise.
	* nscd/connections.c: Likewise.
	* nscd/dbg_log.c: Likewise.
	* nscd/cache.c: Likewise.
	* nscd/hstcache.c: Likewise.
	* nscd/nscd_conf.c: Likewise.
	* nscd/getgrgid_r.c: Likewise.
	* nscd/pwdcache.c: Likewise.
	* catgets/gencat.c: Likewise.
	* locale/programs/linereader.h: Likewise.
	* locale/programs/locarchive.c: Likewise.
	* locale/programs/ld-paper.c: Likewise.
	* locale/programs/locfile-kw.h: Likewise.
	* locale/programs/ld-address.c: Likewise.
	* locale/programs/xmalloc.c: Likewise.
	* locale/programs/ld-time.c: Likewise.
	* locale/programs/localedef.c: Likewise.
	* locale/programs/simple-hash.c: Likewise.
	* locale/programs/xstrdup.c: Likewise.
	* locale/programs/ld-numeric.c: Likewise.
	* locale/programs/locfile-kw.gperf: Likewise.
	* locale/programs/ld-collate.c: Likewise.
	* locale/programs/charmap-kw.gperf: Likewise.
	* locale/programs/charmap.h: Likewise.
	* locale/programs/charmap-kw.h: Likewise.
	* locale/programs/config.h: Likewise.
	* locale/programs/locfile.c: Likewise.
	* locale/programs/ld-ctype.c: Likewise.
	* locale/programs/charmap.c: Likewise.
	* locale/programs/ld-messages.c: Likewise.
	* locale/programs/repertoire.h: Likewise.
	* locale/programs/locale.c: Likewise.
	* locale/programs/ld-name.c: Likewise.
	* locale/programs/linereader.c: Likewise.
	* locale/programs/locfile.h: Likewise.
	* locale/programs/3level.h: Likewise.
	* locale/programs/ld-monetary.c: Likewise.
	* locale/programs/ld-measurement.c: Likewise.
	* locale/programs/charmap-dir.c: Likewise.
	* locale/programs/ld-identification.c: Likewise.
	* locale/programs/localedef.h: Likewise.
	* locale/programs/charmap-dir.h: Likewise.
	* locale/programs/repertoire.c: Likewise.
	* locale/programs/simple-hash.h: Likewise.
	* locale/programs/ld-telephone.c: Likewise.
	* locale/programs/locale-spec.c: Likewise.
	* locale/programs/locfile-token.h: Likewise.
	* posix/getconf.c: Likewise.
	* iconv/dummy-repertoire.c: Likewise.
	* iconv/iconv_charmap.c: Likewise.
	* iconv/iconvconfig.c: Likewise.
	* iconv/iconv_prog.c: Likewise.
	* malloc/memusagestat.c: Likewise.
	* sysdeps/unix/sysv/linux/nscd_setup_thread.c: Likewise.
2007-07-16 00:56:07 +00:00
Ulrich Drepper 1f4843fbff * malloc/hooks.c (MALLOC_STATE_VERSION): Bump.
(public_sET_STATe): If ms->version < 3, put all chunks into
	unsorted chunks and clear {fd,bk}_nextsize fields of largebin
	chunks.

	* malloc/malloc.c [MALLOC_DEBUG]: Revert 2007-05-13 changes.
	* malloc/hooks.c: Likewise.
	* malloc/arena.c: Likewise.
	* malloc/malloc.c (do_check_malloc_state): Don't assert
	n_mmaps is not greater than n_mmaps_max.  This removes the need
	for the previous change.

	* malloc/Makefile (CFLAGS-malloc.c): Revert accidental
	2007-05-07 commit.
2007-05-21 16:13:18 +00:00
Ulrich Drepper 2acd01acb1 * malloc/malloc.c (do_check_chunk): Correct check for mmaped block
not overlapping with arena.
2007-05-19 04:42:52 +00:00
Ulrich Drepper 129abdd3ee * malloc/mcheck.c (reallochook): If size==0, free the block. 2007-05-19 04:26:03 +00:00
Ulrich Drepper 1d47e92f71 * malloc/malloc.c: Use all small bin slots on 64-bit archs.
* malloc/malloc.c (largebin_index): Really have 32 buckets with 64
	sizes.
2007-05-15 01:51:37 +00:00
Ulrich Drepper 1a31b586c4 * malloc/malloc.c (largebin_index): Really have 32 buckets with 64 sizes.
2007-05-13  Ulrich Drepper  <drepper@redhat.com>
2007-05-14 22:53:09 +00:00
Ulrich Drepper bf98bd2966 [MALLOC_DEBUG]: Keep track of current maximum number of mmaps. n_mmaps_max is the target. 2007-05-13 20:32:57 +00:00
Jakub Jelinek c7fd336280 * malloc/arena.c (heap_info): Add mprotect_size field, adjust pad.
(new_heap): Initialize mprotect_size. 
(grow_heap): When growing, only mprotect from mprotect_size till 
new_size if mprotect_size is smaller.  When shrinking, use PROT_NONE 
MMAP for __libc_enable_secure only, otherwise use MADV_DONTNEED.
2007-05-07  Ulrich Drepper  <drepper@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* malloc/arena.c (heap_info): Add mprotect_size field, adjust pad.
	(new_heap): Initialize mprotect_size.
	(grow_heap): When growing, only mprotect from mprotect_size till
	new_size if mprotect_size is smaller.  When shrinking, use PROT_NONE
	MMAP for __libc_enable_secure only, otherwise use MADV_DONTNEED.
2007-05-07 15:30:57 +00:00
Ulrich Drepper 7ecfbd386a [BZ #4349]
2007-04-30  Ulrich Drepper  <drepper@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	[BZ #4349]
	* malloc/malloc.c: Keep separate list for first blocks on the bin
	lists with a given size.  This helps skipping over list elements
	we know won't fit in two places.
	Inspired by a patch by Tomash Brechko <tomash.brechko@gmail.com>.
2007-04-30 22:18:46 +00:00
Ulrich Drepper 07fb518573 [BZ #3348]
2007-02-17  Ulrich Drepper  <drepper@redhat.com>
	[BZ #3348]
	* malloc/memusage.sh: Cleanups.
	* debug/xtrace.sh: Quoting and trap changes.

	* locale/iso-3166.def: Add Jersey, Guernsey, and Isle Of Man entries.
2007-02-17 08:36:28 +00:00
Ulrich Drepper 7fbc8784bd * stdio-common/_itoa.h: Define _itoa and _fitoa for 64-bit platforms.
* malloc/mtrace.c: Revert last change.
	* posix/wordexp.c: Likewise.
2007-01-25 00:45:00 +00:00