Hello community,

here is the log from the commit of package jemalloc for openSUSE:Factory 
checked in at 2016-06-12 18:51:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jemalloc (Old)
 and      /work/SRC/openSUSE:Factory/.jemalloc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "jemalloc"

Changes:
--------
--- /work/SRC/openSUSE:Factory/jemalloc/jemalloc.changes        2016-05-19 
12:04:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.jemalloc.new/jemalloc.changes   2016-06-12 
18:52:04.000000000 +0200
@@ -1,0 +2,12 @@
+Thu Jun  9 07:26:13 UTC 2016 - idon...@suse.com
+
+- Update to version 4.2.1
+  * Fix bootstrapping issues for configurations that require
+    allocation during tsd initialization (e.g. --disable-tls).
+  * Fix gettimeofday() version of nstime_update().
+  * Fix Valgrind regressions in calloc() and chunk_alloc_wrapper().
+  * Fix potential VM map fragmentation regression.
+  * Fix opt_zero-triggered in-place huge reallocation zeroing.
+  * Fix heap profiling context leaks in reallocation edge cases. 
+
+-------------------------------------------------------------------

Old:
----
  jemalloc-4.2.0.tar.bz2

New:
----
  jemalloc-4.2.1.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ jemalloc.spec ++++++
--- /var/tmp/diff_new_pack.EtwJ01/_old  2016-06-12 18:52:05.000000000 +0200
+++ /var/tmp/diff_new_pack.EtwJ01/_new  2016-06-12 18:52:05.000000000 +0200
@@ -18,7 +18,7 @@
 
 %define lname  libjemalloc2
 Name:           jemalloc
-Version:        4.2.0
+Version:        4.2.1
 Release:        0
 Summary:        General-purpose scalable concurrent malloc implementation
 License:        BSD-2-Clause

++++++ jemalloc-4.2.0.tar.bz2 -> jemalloc-4.2.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/ChangeLog new/jemalloc-4.2.1/ChangeLog
--- old/jemalloc-4.2.0/ChangeLog        2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/ChangeLog        2016-06-08 20:42:27.000000000 +0200
@@ -4,6 +4,17 @@
 
     https://github.com/jemalloc/jemalloc
 
+* 4.2.1 (June 8, 2016)
+
+  Bug fixes:
+  - Fix bootstrapping issues for configurations that require allocation during
+    tsd initialization (e.g. --disable-tls).  (@cferris1000, @jasone)
+  - Fix gettimeofday() version of nstime_update().  (@ronawho)
+  - Fix Valgrind regressions in calloc() and chunk_alloc_wrapper().  (@ronawho)
+  - Fix potential VM map fragmentation regression.  (@jasone)
+  - Fix opt_zero-triggered in-place huge reallocation zeroing.  (@jasone)
+  - Fix heap profiling context leaks in reallocation edge cases.  (@jasone)
+
 * 4.2.0 (May 12, 2016)
 
   New features:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/VERSION new/jemalloc-4.2.1/VERSION
--- old/jemalloc-4.2.0/VERSION  2016-05-12 23:55:04.000000000 +0200
+++ new/jemalloc-4.2.1/VERSION  2016-06-08 20:42:27.000000000 +0200
@@ -1 +1 @@
-4.2.0-0-gf70a254d44c8d30af2cd5d30531fb18fdabaae6d
+4.2.1-0-g3de035335255d553bdb344c32ffdb603816195d8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/doc/jemalloc.3 
new/jemalloc-4.2.1/doc/jemalloc.3
--- old/jemalloc-4.2.0/doc/jemalloc.3   2016-05-12 23:56:21.000000000 +0200
+++ new/jemalloc-4.2.1/doc/jemalloc.3   2016-06-08 20:44:04.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: JEMALLOC
 .\"    Author: Jason Evans
 .\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
-.\"      Date: 05/12/2016
+.\"      Date: 06/08/2016
 .\"    Manual: User Manual
-.\"    Source: jemalloc 4.2.0-0-gf70a254d44c8d30af2cd5d30531fb18fdabaae6d
+.\"    Source: jemalloc 4.2.1-0-g3de035335255d553bdb344c32ffdb603816195d8
 .\"  Language: English
 .\"
-.TH "JEMALLOC" "3" "05/12/2016" "jemalloc 4.2.0-0-gf70a254d44c8" "User Manual"
+.TH "JEMALLOC" "3" "06/08/2016" "jemalloc 4.2.1-0-g3de035335255" "User Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
 jemalloc \- general purpose memory allocation functions
 .SH "LIBRARY"
 .PP
-This manual describes jemalloc 
4\&.2\&.0\-0\-gf70a254d44c8d30af2cd5d30531fb18fdabaae6d\&. More information can 
be found at the
+This manual describes jemalloc 
4\&.2\&.1\-0\-g3de035335255d553bdb344c32ffdb603816195d8\&. More information can 
be found at the
 \m[blue]\fBjemalloc website\fR\m[]\&\s-2\u[1]\d\s+2\&.
 .SH "SYNOPSIS"
 .sp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/doc/jemalloc.html 
new/jemalloc-4.2.1/doc/jemalloc.html
--- old/jemalloc-4.2.0/doc/jemalloc.html        2016-05-12 23:56:20.000000000 
+0200
+++ new/jemalloc-4.2.1/doc/jemalloc.html        2016-06-08 20:44:04.000000000 
+0200
@@ -1,7 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; 
charset=ISO-8859-1"><title>JEMALLOC</title><meta name="generator" 
content="DocBook XSL Stylesheets V1.79.1"></head><body bgcolor="white" 
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div 
class="refentry"><a name="idm45323475382592"></a><div 
class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>jemalloc 
&#8212; general purpose memory allocation functions</p></div><div 
class="refsect1"><a name="library"></a><h2>LIBRARY</h2><p>This manual describes 
jemalloc 4.2.0-0-gf70a254d44c8d30af2cd5d30531fb18fdabaae6d.  More information
-    can be found at the <a class="ulink" 
href="http://www.canonware.com/jemalloc/"; target="_top">jemalloc 
website</a>.</p></div><div class="refsynopsisdiv"><h2>SYNOPSIS</h2><div 
class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;<code 
class="filename">jemalloc/jemalloc.h</code>&gt;</pre><div class="refsect2"><a 
name="idm45323477405200"></a><h3>Standard API</h3><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">malloc</b>(</code></td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">calloc</b>(</code></td><td>size_t <var 
class="pdparam">number</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">posix_memalign</b>(</code></td><td>void **<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">alignment</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">aligned_alloc</b>(</code></td><td>size_t <var 
class="pdparam">alignment</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">realloc</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">free</b>(</code></td><td>void *<var 
class="pdparam">ptr</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div></div><div class="refsect2"><a 
name="idm45323479782032"></a><h3>Non-standard API</h3><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">mallocx</b>(</code></td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">rallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">xallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">extra</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">sallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">dallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">sdallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">nallocx</b>(</code></td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">mallctl</b>(</code></td><td>const char *<var 
class="pdparam">name</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">oldp</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">oldlenp</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">newp</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">newlen</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">mallctlnametomib</b>(</code></td><td>const char *<var 
class="pdparam">name</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">mibp</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">miblenp</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">mallctlbymib</b>(</code></td><td>const size_t *<var 
class="pdparam">mib</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">miblen</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">oldp</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">oldlenp</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">newp</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">newlen</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">malloc_stats_print</b>(</code></td><td>void <var 
class="pdparam">(*write_cb)</var>
+<html><head><meta http-equiv="Content-Type" content="text/html; 
charset=ISO-8859-1"><title>JEMALLOC</title><meta name="generator" 
content="DocBook XSL Stylesheets V1.79.1"></head><body bgcolor="white" 
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div 
class="refentry"><a name="idm45840709904800"></a><div 
class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>jemalloc 
&#8212; general purpose memory allocation functions</p></div><div 
class="refsect1"><a name="library"></a><h2>LIBRARY</h2><p>This manual describes 
jemalloc 4.2.1-0-g3de035335255d553bdb344c32ffdb603816195d8.  More information
+    can be found at the <a class="ulink" 
href="http://www.canonware.com/jemalloc/"; target="_top">jemalloc 
website</a>.</p></div><div class="refsynopsisdiv"><h2>SYNOPSIS</h2><div 
class="funcsynopsis"><pre class="funcsynopsisinfo">#include &lt;<code 
class="filename">jemalloc/jemalloc.h</code>&gt;</pre><div class="refsect2"><a 
name="idm45840705732576"></a><h3>Standard API</h3><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">malloc</b>(</code></td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">calloc</b>(</code></td><td>size_t <var 
class="pdparam">number</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">posix_memalign</b>(</code></td><td>void **<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">alignment</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">aligned_alloc</b>(</code></td><td>size_t <var 
class="pdparam">alignment</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">realloc</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">free</b>(</code></td><td>void *<var 
class="pdparam">ptr</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div></div><div class="refsect2"><a 
name="idm45840709956800"></a><h3>Non-standard API</h3><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">mallocx</b>(</code></td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void *<b 
class="fsfunc">rallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">xallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">extra</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">sallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">dallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">sdallocx</b>(</code></td><td>void *<var 
class="pdparam">ptr</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">nallocx</b>(</code></td><td>size_t <var 
class="pdparam">size</var>, </td></tr><tr><td>�</td><td>int <var 
class="pdparam">flags</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">mallctl</b>(</code></td><td>const char *<var 
class="pdparam">name</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">oldp</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">oldlenp</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">newp</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">newlen</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">mallctlnametomib</b>(</code></td><td>const char *<var 
class="pdparam">name</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">mibp</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">miblenp</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">int <b 
class="fsfunc">mallctlbymib</b>(</code></td><td>const size_t *<var 
class="pdparam">mib</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">miblen</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">oldp</var>, </td></tr><tr><td>�</td><td>size_t *<var 
class="pdparam">oldlenp</var>, </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">newp</var>, </td></tr><tr><td>�</td><td>size_t <var 
class="pdparam">newlen</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">malloc_stats_print</b>(</code></td><td>void <var 
class="pdparam">(*write_cb)</var>
             <code>(</code>void *, const char *<code>)</code>
-          , </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">cbopaque</var>, </td></tr><tr><td>�</td><td>const char *<var 
class="pdparam">opts</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">malloc_usable_size</b>(</code></td><td>const void *<var 
class="pdparam">ptr</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">(*malloc_message)</b>(</code></td><td>void *<var 
class="pdparam">cbopaque</var>, </td></tr><tr><td>�</td><td>const char *<var 
class="pdparam">s</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><p><span class="type">const char 
*</span><code class="varname">malloc_conf</code>;</p></div></div></div><div 
class="refsect1"><a name="description"></a><h2>DESCRIPTION</h2><div 
class="refsect2"><a name="idm45323474546320"></a><h3>Standard API</h3><p>The 
<code class="function">malloc</code>(<em class="parameter"><code></code></em>) 
function allocates
+          , </td></tr><tr><td>�</td><td>void *<var 
class="pdparam">cbopaque</var>, </td></tr><tr><td>�</td><td>const char *<var 
class="pdparam">opts</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">size_t <b 
class="fsfunc">malloc_usable_size</b>(</code></td><td>const void *<var 
class="pdparam">ptr</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><table border="0" 
class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; 
cellpadding: 0;"><tr><td><code class="funcdef">void <b 
class="fsfunc">(*malloc_message)</b>(</code></td><td>void *<var 
class="pdparam">cbopaque</var>, </td></tr><tr><td>�</td><td>const char *<var 
class="pdparam">s</var><code>)</code>;</td></tr></table><div 
class="funcprototype-spacer">�</div><p><span class="type">const char 
*</span><code class="varname">malloc_conf</code>;</p></div></div></div><div 
class="refsect1"><a name="description"></a><h2>DESCRIPTION</h2><div 
class="refsect2"><a name="idm45840704680816"></a><h3>Standard API</h3><p>The 
<code class="function">malloc</code>(<em class="parameter"><code></code></em>) 
function allocates
       <em class="parameter"><code>size</code></em> bytes of uninitialized 
memory.  The allocated
       space is suitably aligned (after possible pointer coercion) for storage
       of any type of object.</p><p>The <code 
class="function">calloc</code>(<em class="parameter"><code></code></em>) 
function allocates
@@ -37,7 +37,7 @@
       <code class="function">malloc</code>(<em 
class="parameter"><code></code></em>) for the specified size.</p><p>The <code 
class="function">free</code>(<em class="parameter"><code></code></em>) function 
causes the
       allocated memory referenced by <em 
class="parameter"><code>ptr</code></em> to be made
       available for future allocations.  If <em 
class="parameter"><code>ptr</code></em> is
-      <code class="constant">NULL</code>, no action occurs.</p></div><div 
class="refsect2"><a name="idm45323474517664"></a><h3>Non-standard 
API</h3><p>The <code class="function">mallocx</code>(<em 
class="parameter"><code></code></em>),
+      <code class="constant">NULL</code>, no action occurs.</p></div><div 
class="refsect2"><a name="idm45840704652160"></a><h3>Non-standard 
API</h3><p>The <code class="function">mallocx</code>(<em 
class="parameter"><code></code></em>),
       <code class="function">rallocx</code>(<em 
class="parameter"><code></code></em>),
       <code class="function">xallocx</code>(<em 
class="parameter"><code></code></em>),
       <code class="function">sallocx</code>(<em 
class="parameter"><code></code></em>),
@@ -1916,7 +1916,7 @@
     <code class="function">malloc_stats_print</code>(<em 
class="parameter"><code></code></em>), followed by a string
     pointer.  Please note that doing anything which tries to allocate memory in
     this function is likely to result in a crash or deadlock.</p><p>All 
messages are prefixed by
-    &#8220;<code class="computeroutput">&lt;jemalloc&gt;: 
</code>&#8221;.</p></div><div class="refsect1"><a 
name="return_values"></a><h2>RETURN VALUES</h2><div class="refsect2"><a 
name="idm45323473646416"></a><h3>Standard API</h3><p>The <code 
class="function">malloc</code>(<em class="parameter"><code></code></em>) and
+    &#8220;<code class="computeroutput">&lt;jemalloc&gt;: 
</code>&#8221;.</p></div><div class="refsect1"><a 
name="return_values"></a><h2>RETURN VALUES</h2><div class="refsect2"><a 
name="idm45840703781248"></a><h3>Standard API</h3><p>The <code 
class="function">malloc</code>(<em class="parameter"><code></code></em>) and
       <code class="function">calloc</code>(<em 
class="parameter"><code></code></em>) functions return a pointer to the
       allocated memory if successful; otherwise a <code 
class="constant">NULL</code>
       pointer is returned and <code class="varname">errno</code> is set to
@@ -1944,7 +1944,7 @@
       allocation failure.  The <code class="function">realloc</code>(<em 
class="parameter"><code></code></em>)
       function always leaves the original buffer intact when an error occurs.
       </p><p>The <code class="function">free</code>(<em 
class="parameter"><code></code></em>) function returns no
-      value.</p></div><div class="refsect2"><a 
name="idm45323473621616"></a><h3>Non-standard API</h3><p>The <code 
class="function">mallocx</code>(<em class="parameter"><code></code></em>) and
+      value.</p></div><div class="refsect2"><a 
name="idm45840703756448"></a><h3>Non-standard API</h3><p>The <code 
class="function">mallocx</code>(<em class="parameter"><code></code></em>) and
       <code class="function">rallocx</code>(<em 
class="parameter"><code></code></em>) functions return a pointer to
       the allocated memory if successful; otherwise a <code 
class="constant">NULL</code>
       pointer is returned to indicate insufficient contiguous memory was
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jemalloc-4.2.0/include/jemalloc/internal/jemalloc_internal.h.in 
new/jemalloc-4.2.1/include/jemalloc/internal/jemalloc_internal.h.in
--- old/jemalloc-4.2.0/include/jemalloc/internal/jemalloc_internal.h.in 
2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/include/jemalloc/internal/jemalloc_internal.h.in 
2016-06-08 20:42:27.000000000 +0200
@@ -754,7 +754,7 @@
                 * Calculate the size of the over-size run that arena_palloc()
                 * would need to allocate in order to guarantee the alignment.
                 */
-               if (usize + large_pad + alignment <= arena_maxrun)
+               if (usize + large_pad + alignment - PAGE <= arena_maxrun)
                        return (usize);
        }
 
@@ -784,7 +784,7 @@
         * Calculate the multi-chunk mapping that huge_palloc() would need in
         * order to guarantee the alignment.
         */
-       if (usize + alignment < usize) {
+       if (usize + alignment - PAGE < usize) {
                /* size_t overflow. */
                return (0);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/include/jemalloc/internal/prof.h 
new/jemalloc-4.2.1/include/jemalloc/internal/prof.h
--- old/jemalloc-4.2.0/include/jemalloc/internal/prof.h 2016-05-12 
23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/include/jemalloc/internal/prof.h 2016-06-08 
20:42:27.000000000 +0200
@@ -513,6 +513,7 @@
                         * though its actual usize was insufficient to cross the
                         * sample threshold.
                         */
+                       prof_alloc_rollback(tsd, tctx, true);
                        tctx = (prof_tctx_t *)(uintptr_t)1U;
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/src/arena.c 
new/jemalloc-4.2.1/src/arena.c
--- old/jemalloc-4.2.0/src/arena.c      2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/src/arena.c      2016-06-08 20:42:27.000000000 +0200
@@ -2687,7 +2687,7 @@
                return (NULL);
 
        alignment = PAGE_CEILING(alignment);
-       alloc_size = usize + large_pad + alignment;
+       alloc_size = usize + large_pad + alignment - PAGE;
 
        malloc_mutex_lock(tsdn, &arena->lock);
        run = arena_run_alloc_large(tsdn, arena, alloc_size, false);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/src/chunk.c 
new/jemalloc-4.2.1/src/chunk.c
--- old/jemalloc-4.2.0/src/chunk.c      2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/src/chunk.c      2016-06-08 20:42:27.000000000 +0200
@@ -421,15 +421,11 @@
 }
 
 static void *
-chunk_alloc_default(void *new_addr, size_t size, size_t alignment, bool *zero,
-    bool *commit, unsigned arena_ind)
+chunk_alloc_default_impl(tsdn_t *tsdn, arena_t *arena, void *new_addr,
+    size_t size, size_t alignment, bool *zero, bool *commit)
 {
        void *ret;
-       tsdn_t *tsdn;
-       arena_t *arena;
 
-       tsdn = tsdn_fetch();
-       arena = chunk_arena_get(tsdn, arena_ind);
        ret = chunk_alloc_core(tsdn, arena, new_addr, size, alignment, zero,
            commit, arena->dss_prec);
        if (ret == NULL)
@@ -441,6 +437,20 @@
 }
 
 static void *
+chunk_alloc_default(void *new_addr, size_t size, size_t alignment, bool *zero,
+    bool *commit, unsigned arena_ind)
+{
+       tsdn_t *tsdn;
+       arena_t *arena;
+
+       tsdn = tsdn_fetch();
+       arena = chunk_arena_get(tsdn, arena_ind);
+
+       return (chunk_alloc_default_impl(tsdn, arena, new_addr, size, alignment,
+           zero, commit));
+}
+
+static void *
 chunk_alloc_retained(tsdn_t *tsdn, arena_t *arena, chunk_hooks_t *chunk_hooks,
     void *new_addr, size_t size, size_t alignment, bool *zero, bool *commit)
 {
@@ -472,14 +482,23 @@
        ret = chunk_alloc_retained(tsdn, arena, chunk_hooks, new_addr, size,
            alignment, zero, commit);
        if (ret == NULL) {
-               ret = chunk_hooks->alloc(new_addr, size, alignment, zero,
-                   commit, arena->ind);
+               if (chunk_hooks->alloc == chunk_alloc_default) {
+                       /* Call directly to propagate tsdn. */
+                       ret = chunk_alloc_default_impl(tsdn, arena, new_addr,
+                           size, alignment, zero, commit);
+               } else {
+                       ret = chunk_hooks->alloc(new_addr, size, alignment,
+                           zero, commit, arena->ind);
+               }
+
                if (ret == NULL)
                        return (NULL);
+
+               if (config_valgrind && chunk_hooks->alloc !=
+                   chunk_alloc_default)
+                       JEMALLOC_VALGRIND_MAKE_MEM_UNDEFINED(ret, chunksize);
        }
 
-       if (config_valgrind && chunk_hooks->alloc != chunk_alloc_default)
-               JEMALLOC_VALGRIND_MAKE_MEM_UNDEFINED(ret, chunksize);
        return (ret);
 }
 
@@ -591,19 +610,30 @@
 }
 
 static bool
-chunk_dalloc_default(void *chunk, size_t size, bool committed,
-    unsigned arena_ind)
+chunk_dalloc_default_impl(tsdn_t *tsdn, void *chunk, size_t size)
 {
 
-       if (!have_dss || !chunk_in_dss(tsdn_fetch(), chunk))
+       if (!have_dss || !chunk_in_dss(tsdn, chunk))
                return (chunk_dalloc_mmap(chunk, size));
        return (true);
 }
 
+static bool
+chunk_dalloc_default(void *chunk, size_t size, bool committed,
+    unsigned arena_ind)
+{
+       tsdn_t *tsdn;
+
+       tsdn = tsdn_fetch();
+
+       return (chunk_dalloc_default_impl(tsdn, chunk, size));
+}
+
 void
 chunk_dalloc_wrapper(tsdn_t *tsdn, arena_t *arena, chunk_hooks_t *chunk_hooks,
     void *chunk, size_t size, bool zeroed, bool committed)
 {
+       bool err;
 
        assert(chunk != NULL);
        assert(CHUNK_ADDR2BASE(chunk) == chunk);
@@ -612,7 +642,13 @@
 
        chunk_hooks_assure_initialized(tsdn, arena, chunk_hooks);
        /* Try to deallocate. */
-       if (!chunk_hooks->dalloc(chunk, size, committed, arena->ind))
+       if (chunk_hooks->dalloc == chunk_dalloc_default) {
+               /* Call directly to propagate tsdn. */
+               err = chunk_dalloc_default_impl(tsdn, chunk, size);
+       } else
+               err = chunk_hooks->dalloc(chunk, size, committed, arena->ind);
+
+       if (!err)
                return;
        /* Try to decommit; purge if that fails. */
        if (committed) {
@@ -681,26 +717,34 @@
 }
 
 static bool
-chunk_merge_default(void *chunk_a, size_t size_a, void *chunk_b, size_t size_b,
-    bool committed, unsigned arena_ind)
+chunk_merge_default_impl(tsdn_t *tsdn, void *chunk_a, void *chunk_b)
 {
 
        if (!maps_coalesce)
                return (true);
-       if (have_dss) {
-               tsdn_t *tsdn = tsdn_fetch();
-               if (chunk_in_dss(tsdn, chunk_a) != chunk_in_dss(tsdn, chunk_b))
-                       return (true);
-       }
+       if (have_dss && chunk_in_dss(tsdn, chunk_a) != chunk_in_dss(tsdn,
+           chunk_b))
+               return (true);
 
        return (false);
 }
 
+static bool
+chunk_merge_default(void *chunk_a, size_t size_a, void *chunk_b, size_t size_b,
+    bool committed, unsigned arena_ind)
+{
+       tsdn_t *tsdn;
+
+       tsdn = tsdn_fetch();
+
+       return (chunk_merge_default_impl(tsdn, chunk_a, chunk_b));
+}
+
 static rtree_node_elm_t *
 chunks_rtree_node_alloc(size_t nelms)
 {
 
-       return ((rtree_node_elm_t *)base_alloc(tsdn_fetch(), nelms *
+       return ((rtree_node_elm_t *)base_alloc(TSDN_NULL, nelms *
            sizeof(rtree_node_elm_t)));
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/src/chunk_mmap.c 
new/jemalloc-4.2.1/src/chunk_mmap.c
--- old/jemalloc-4.2.0/src/chunk_mmap.c 2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/src/chunk_mmap.c 2016-06-08 20:42:27.000000000 +0200
@@ -9,7 +9,7 @@
        void *ret;
        size_t alloc_size;
 
-       alloc_size = size + alignment;
+       alloc_size = size + alignment - PAGE;
        /* Beware size_t wrap-around. */
        if (alloc_size < size)
                return (NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/src/huge.c 
new/jemalloc-4.2.1/src/huge.c
--- old/jemalloc-4.2.0/src/huge.c       2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/src/huge.c       2016-06-08 20:42:27.000000000 +0200
@@ -262,19 +262,19 @@
        malloc_mutex_unlock(tsdn, &arena->huge_mtx);
 
        /*
-        * Copy zero into is_zeroed_chunk and pass the copy to chunk_alloc(), so
-        * that it is possible to make correct junk/zero fill decisions below.
+        * Use is_zeroed_chunk to detect whether the trailing memory is zeroed,
+        * update extent's zeroed field, and zero as necessary.
         */
-       is_zeroed_chunk = zero;
-
+       is_zeroed_chunk = false;
        if (arena_chunk_ralloc_huge_expand(tsdn, arena, ptr, oldsize, usize,
             &is_zeroed_chunk))
                return (true);
 
        malloc_mutex_lock(tsdn, &arena->huge_mtx);
-       /* Update the size of the huge allocation. */
        huge_node_unset(ptr, node);
        extent_node_size_set(node, usize);
+       extent_node_zeroed_set(node, extent_node_zeroed_get(node) &&
+           is_zeroed_chunk);
        huge_node_reset(tsdn, ptr, node);
        malloc_mutex_unlock(tsdn, &arena->huge_mtx);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/src/jemalloc.c 
new/jemalloc-4.2.1/src/jemalloc.c
--- old/jemalloc-4.2.0/src/jemalloc.c   2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/src/jemalloc.c   2016-06-08 20:42:27.000000000 +0200
@@ -1739,7 +1739,7 @@
                ret = ialloc_body(num_size, true, &tsdn, &usize, true);
                ialloc_post_check(ret, tsdn, usize, "calloc", true, true);
                UTRACE(0, num_size, ret);
-               JEMALLOC_VALGRIND_MALLOC(ret != NULL, tsdn, ret, usize, false);
+               JEMALLOC_VALGRIND_MALLOC(ret != NULL, tsdn, ret, usize, true);
        }
 
        return (ret);
@@ -2222,7 +2222,7 @@
 
        prof_active = prof_active_get_unlocked();
        old_tctx = prof_tctx_get(tsd_tsdn(tsd), old_ptr);
-       tctx = prof_alloc_prep(tsd, *usize, prof_active, true);
+       tctx = prof_alloc_prep(tsd, *usize, prof_active, false);
        if (unlikely((uintptr_t)tctx != (uintptr_t)1U)) {
                p = irallocx_prof_sample(tsd, old_ptr, old_usize, *usize,
                    alignment, zero, tcache, arena, tctx);
@@ -2231,7 +2231,7 @@
                    tcache, arena);
        }
        if (unlikely(p == NULL)) {
-               prof_alloc_rollback(tsd, tctx, true);
+               prof_alloc_rollback(tsd, tctx, false);
                return (NULL);
        }
 
@@ -2246,7 +2246,7 @@
                 */
                *usize = isalloc(tsd_tsdn(tsd), p, config_prof);
        }
-       prof_realloc(tsd, p, *usize, tctx, prof_active, true, old_ptr,
+       prof_realloc(tsd, p, *usize, tctx, prof_active, false, old_ptr,
            old_usize, old_tctx);
 
        return (p);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-4.2.0/src/nstime.c 
new/jemalloc-4.2.1/src/nstime.c
--- old/jemalloc-4.2.0/src/nstime.c     2016-05-12 23:54:53.000000000 +0200
+++ new/jemalloc-4.2.1/src/nstime.c     2016-06-08 20:42:27.000000000 +0200
@@ -128,9 +128,11 @@
                time->ns = ts.tv_sec * BILLION + ts.tv_nsec;
        }
 #else
-       struct timeval tv;
-       gettimeofday(&tv, NULL);
-       time->ns = tv.tv_sec * BILLION + tv.tv_usec * 1000;
+       {
+               struct timeval tv;
+               gettimeofday(&tv, NULL);
+               time->ns = tv.tv_sec * BILLION + tv.tv_usec * 1000;
+       }
 #endif
 
        /* Handle non-monotonic clocks. */


Reply via email to