diff --git a/glibc-revert-arena-threshold-fix.patch b/glibc-revert-arena-threshold-fix.patch new file mode 100644 index 0000000..e0aaded --- /dev/null +++ b/glibc-revert-arena-threshold-fix.patch @@ -0,0 +1,44 @@ +Revert the following fix temporarily: + +commit c26efef9798914e208329c0e8c3c73bb1135d9e3 +Author: Mel Gorman +Date: Thu Apr 2 12:14:14 2015 +0530 + + malloc: Consistently apply trim_threshold to all heaps [BZ #17195] + + +because it makes an openjdk bug (#1209451) more prominent, crashing java +commands. + +diff --git a/malloc/arena.c b/malloc/arena.c +index 8af51f0..d85f371 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -658,7 +658,7 @@ heap_trim (heap_info *heap, size_t pad) + unsigned long pagesz = GLRO (dl_pagesize); + mchunkptr top_chunk = top (ar_ptr), p, bck, fwd; + heap_info *prev_heap; +- long new_size, top_size, extra, prev_size, misalign; ++ long new_size, top_size, top_area, extra, prev_size, misalign; + + /* Can this heap go away completely? */ + while (top_chunk == chunk_at_offset (heap, sizeof (*heap))) +@@ -694,9 +694,16 @@ heap_trim (heap_info *heap, size_t pad) + set_head (top_chunk, new_size | PREV_INUSE); + /*check_chunk(ar_ptr, top_chunk);*/ + } ++ ++ /* Uses similar logic for per-thread arenas as the main arena with systrim ++ by preserving the top pad and at least a page. */ + top_size = chunksize (top_chunk); +- extra = (top_size - pad - MINSIZE - 1) & ~(pagesz - 1); +- if (extra < (long) pagesz) ++ top_area = top_size - MINSIZE - 1; ++ if (top_area <= pad) ++ return 0; ++ ++ extra = ALIGN_DOWN(top_area - pad, pagesz); ++ if ((unsigned long) extra < mp_.trim_threshold) + return 0; + + /* Try to shrink. */ diff --git a/glibc.spec b/glibc.spec index 97eba8a..dd0b4e6 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,6 +1,6 @@ -%define glibcsrcdir glibc-2.21-217-g7e9c7b9 +%define glibcsrcdir glibc-2.21-320-ga6d78c3 %define glibcversion 2.21.90 -%define glibcrelease 10%{?dist} +%define glibcrelease 11%{?dist} # Pre-release tarballs are pulled in from git using a command that is # effectively: # @@ -209,6 +209,9 @@ Patch0053: %{name}-cs-path.patch # Remove the clock_* functions and use the ones in libc like librt does. Patch0054: %{name}-rtkaio-clock.patch +# Temporarily revert a fix to work around bz #1209451. +Patch0055: %{name}-revert-arena-threshold-fix.patch + ############################################################################## # # Patches from upstream @@ -579,6 +582,7 @@ package or when debugging this package. %patch0052 -p1 %patch0053 -p1 %patch0054 -p1 +%patch0055 -p1 -R ############################################################################## # %%prep - Additional prep required... @@ -1751,6 +1755,10 @@ rm -f *.filelist* %endif %changelog +* Thu May 07 2015 Siddhesh Poyarekar - 2.21.90-11 +- Auto-sync with upstream master. +- Revert arena threshold fix to work around #1209451. + * Tue Apr 07 2015 Siddhesh Poyarekar - 2.21.90-10 - Revert last auto-sync (#1209451). diff --git a/sources b/sources index 5e02458..bfaee1f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -307bb73bbc157901cd143f14c712291a glibc-2.21-217-g7e9c7b9.tar.gz +a98e79a6a741f842fd1505e54b5face8 glibc-2.21-320-ga6d78c3.tar.gz