Hello community,

here is the log from the commit of package jemalloc for openSUSE:Factory 
checked in at 2013-06-06 14:58:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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        2013-03-08 
09:13:35.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.jemalloc.new/jemalloc.changes   2013-06-06 
14:58:26.000000000 +0200
@@ -1,0 +2,12 @@
+Thu Jun  6 10:52:02 UTC 2013 - idon...@suse.com
+
+- Rename pprof to pprof-jemalloc to prevent conflict with gperftools 
+
+-------------------------------------------------------------------
+Wed Jun  5 14:49:45 UTC 2013 - idon...@suse.com
+
+- Update to version 3.4.0
+  * Support for aarch64
+  * Fix race-triggered deadlocks in chunk_record()
+
+-------------------------------------------------------------------

Old:
----
  jemalloc-3.3.1.tar.bz2

New:
----
  jemalloc-3.4.0.tar.bz2

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

Other differences:
------------------
++++++ jemalloc.spec ++++++
--- /var/tmp/diff_new_pack.EYmNg4/_old  2013-06-06 14:58:27.000000000 +0200
+++ /var/tmp/diff_new_pack.EYmNg4/_new  2013-06-06 14:58:27.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           jemalloc
-Version:        3.3.1
+Version:        3.4.0
 Release:        0
 %define lname  libjemalloc1
 Summary:        General-purpose scalable concurrent malloc implementation
@@ -73,6 +73,7 @@
 %install
 b=%{buildroot};
 make install DESTDIR="$b";
+
 chmod -x "%{buildroot}/%{_libdir}"/*.a;
 if [ "%_docdir" != "%{_datadir}/doc" ]; then
        # stupid Makefile does not allow to set it
@@ -80,13 +81,15 @@
        mv "$b/%{_datadir}/doc/jemalloc" "$b/%_docdir/%{name}";
 fi;
 
+mv %{buildroot}/%{_bindir}/pprof %{buildroot}/%{_bindir}/pprof-jemalloc
+
 %check
 make check
 
 %files
 %defattr(-,root,root)
 %{_bindir}/jemalloc.sh
-%{_bindir}/pprof
+%{_bindir}/pprof-jemalloc
 %{_mandir}/man*/*
 %_docdir/%{name}
 

++++++ jemalloc-3.3.1.tar.bz2 -> jemalloc-3.4.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-3.3.1/ChangeLog new/jemalloc-3.4.0/ChangeLog
--- old/jemalloc-3.3.1/ChangeLog        2013-03-06 21:04:18.000000000 +0100
+++ new/jemalloc-3.4.0/ChangeLog        2013-06-03 06:06:22.000000000 +0200
@@ -6,6 +6,19 @@
     http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
     git://canonware.com/jemalloc.git
 
+* 3.4.0 (June 2, 2013)
+
+  This version is essentially a small bugfix release, but the addition of
+  aarch64 support requires that the minor version be incremented.
+
+  Bug fixes:
+  - Fix race-triggered deadlocks in chunk_record().  These deadlocks were
+    typically triggered by multiple threads concurrently deallocating huge
+    objects.
+
+  New features:
+  - Add support for the aarch64 architecture.
+
 * 3.3.1 (March 6, 2013)
 
   This version fixes bugs that are typically encountered only when utilizing
@@ -15,7 +28,7 @@
   - Fix a locking order bug that could cause deadlock during fork if heap
     profiling were enabled.
   - Fix a chunk recycling bug that could cause the allocator to lose track of
-    whether a chunk was zeroed.   On FreeBSD, NetBSD, and OS X, it could cause
+    whether a chunk was zeroed.  On FreeBSD, NetBSD, and OS X, it could cause
     corruption if allocating via sbrk(2) (unlikely unless running with the
     "dss:primary" option specified).  This was completely harmless on Linux
     unless using mlockall(2) (and unlikely even then, unless the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-3.3.1/VERSION new/jemalloc-3.4.0/VERSION
--- old/jemalloc-3.3.1/VERSION  2013-03-06 21:04:18.000000000 +0100
+++ new/jemalloc-3.4.0/VERSION  2013-06-03 06:06:22.000000000 +0200
@@ -1 +1 @@
-3.3.1-0-g9ef9d9e8c271cdf14f664b871a8f98c827714784
+3.4.0-0-g0ed518e5dab789ad2171bb38977a8927e2a26775
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-3.3.1/doc/jemalloc.3 
new/jemalloc-3.4.0/doc/jemalloc.3
--- old/jemalloc-3.3.1/doc/jemalloc.3   2013-03-06 21:06:05.000000000 +0100
+++ new/jemalloc-3.4.0/doc/jemalloc.3   2013-06-03 06:07:22.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: JEMALLOC
 .\"    Author: Jason Evans
 .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\"      Date: 03/06/2013
+.\"      Date: 06/02/2013
 .\"    Manual: User Manual
-.\"    Source: jemalloc 3.3.1-0-g9ef9d9e8c271cdf14f664b871a8f98c827714784
+.\"    Source: jemalloc 3.4.0-0-g0ed518e5dab789ad2171bb38977a8927e2a26775
 .\"  Language: English
 .\"
-.TH "JEMALLOC" "3" "03/06/2013" "jemalloc 3.3.1-0-g9ef9d9e8c271" "User Manual"
+.TH "JEMALLOC" "3" "06/02/2013" "jemalloc 3.4.0-0-g0ed518e5dab7" "User Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
 jemalloc \- general purpose memory allocation functions
 .SH "LIBRARY"
 .PP
-This manual describes jemalloc 
3\&.3\&.1\-0\-g9ef9d9e8c271cdf14f664b871a8f98c827714784\&. More information can 
be found at the
+This manual describes jemalloc 
3\&.4\&.0\-0\-g0ed518e5dab789ad2171bb38977a8927e2a26775\&. More information can 
be found at the
 \m[blue]\fBjemalloc website\fR\m[]\&\s-2\u[1]\d\s+2\&.
 .SH "SYNOPSIS"
 .sp
@@ -376,7 +376,19 @@
 The string pointed to by the global variable
 \fImalloc_conf\fR, the \(lqname\(rq of the file referenced by the symbolic 
link named
 /etc/malloc\&.conf, and the value of the environment variable
-\fBMALLOC_CONF\fR, will be interpreted, in that order, from left to right as 
options\&.
+\fBMALLOC_CONF\fR, will be interpreted, in that order, from left to right as 
options\&. Note that
+\fImalloc_conf\fR
+may be read before
+\fBmain\fR\fB\fR
+is entered, so the declaration of
+\fImalloc_conf\fR
+should specify an initializer that contains the final value to be read by 
jemalloc\&.
+\fImalloc_conf\fR
+is a compile\-time setting, whereas
+/etc/malloc\&.conf
+and
+\fBMALLOC_CONF\fR
+can be safely set any time prior to program invocation\&.
 .PP
 An options string is a comma\-separated list of option:value pairs\&. There is 
one key corresponding to each
 "opt\&.*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-3.3.1/doc/jemalloc.html 
new/jemalloc-3.4.0/doc/jemalloc.html
--- old/jemalloc-3.3.1/doc/jemalloc.html        2013-03-06 21:06:04.000000000 
+0100
+++ new/jemalloc-3.4.0/doc/jemalloc.html        2013-06-03 06:07:20.000000000 
+0200
@@ -1,4 +1,4 @@
-<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.76.1"></head><body bgcolor="white" 
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div 
class="refentry" title="JEMALLOC"><a name="id286949159"></a><div 
class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>jemalloc 
&#8212; general purpose memory allocation functions</p></div><div 
class="refsect1" title="LIBRARY"><a name="library"></a><h2>LIBRARY</h2><p>This 
manual describes jemalloc 3.3.1-0-g9ef9d9e8c271cdf14f664b871a8f98c827714784.  
More information
+<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.76.1"></head><body bgcolor="white" 
text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div 
class="refentry" title="JEMALLOC"><a name="id286949159"></a><div 
class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>jemalloc 
&#8212; general purpose memory allocation functions</p></div><div 
class="refsect1" title="LIBRARY"><a name="library"></a><h2>LIBRARY</h2><p>This 
manual describes jemalloc 3.4.0-0-g0ed518e5dab789ad2171bb38977a8927e2a26775.  
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" 
title="SYNOPSIS"><h2>SYNOPSIS</h2><div class="funcsynopsis"><pre 
class="funcsynopsisinfo">#include &lt;<code class="filename">stdlib.h</code>&gt;
 #include &lt;<code class="filename">jemalloc/jemalloc.h</code>&gt;</pre><div 
class="refsect2" title="Standard API"><a name="id286901505"></a><h3>Standard 
API</h3><table border="0" summary="Function synopsis" cellspacing="0" 
cellpadding="0" class="funcprototype-table"><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" summary="Function 
synopsis" cellspacing="0" cellpadding="0" 
class="funcprototype-table"><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" summary="Function 
synopsis" cellspacing="0" cellpadding="0" 
class="funcprototype-table"><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" summary="Function 
synopsis" cellspacing="0" cellpadding="0" 
class="funcprototype-table"><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" summary="Function 
synopsis" cellspacing="0" cellpadding="0" 
class="funcprototype-table"><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" summary="Function 
synopsis" cellspacing="0" cellpadding="0" 
class="funcprototype-table"><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" 
title="Non-standard API"><a name="id286900549"></a><h3>Non-standard 
API</h3><table border="0" summary="Function synopsis" cellspacing="0" 
cellpadding="0" class="funcprototype-table"><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" summary="Function 
synopsis" cellspacing="0" cellpadding="0" 
class="funcprototype-table"><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>
@@ -186,7 +186,13 @@
     <code class="varname">malloc_conf</code>, the &#8220;name&#8221; of the 
file
     referenced by the symbolic link named <code 
class="filename">/etc/malloc.conf</code>, and the value of the
     environment variable <code class="envar">MALLOC_CONF</code>, will be 
interpreted, in
-    that order, from left to right as options.</p><p>An options string is a 
comma-separated list of option:value pairs.
+    that order, from left to right as options.  Note that
+    <code class="varname">malloc_conf</code> may be read before
+    <code class="function">main</code>(<em 
class="parameter"><code></code></em>) is entered, so the declaration of
+    <code class="varname">malloc_conf</code> should specify an initializer 
that contains
+    the final value to be read by jemalloc.  <code 
class="varname">malloc_conf</code> is
+    a compile-time setting, whereas <code 
class="filename">/etc/malloc.conf</code> and <code 
class="envar">MALLOC_CONF</code>
+    can be safely set any time prior to program invocation.</p><p>An options 
string is a comma-separated list of option:value pairs.
     There is one key corresponding to each <a class="link" href="#opt.abort">
     "<code class="mallctl">opt.*</code>"
   </a> mallctl (see the <a class="xref" href="#mallctl_namespace" 
title="MALLCTL NAMESPACE">MALLCTL NAMESPACE</a> section for options
@@ -1327,7 +1333,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" title="RETURN VALUES"><a 
name="return_values"></a><h2>RETURN VALUES</h2><div class="refsect2" 
title="Standard API"><a name="id286954473"></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" title="RETURN VALUES"><a 
name="return_values"></a><h2>RETURN VALUES</h2><div class="refsect2" 
title="Standard API"><a name="id286954499"></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
@@ -1355,7 +1361,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" title="Non-standard API"><a 
name="id286954690"></a><h3>Non-standard API</h3><p>The <code 
class="function">malloc_usable_size</code>(<em 
class="parameter"><code></code></em>) function
+      value.</p></div><div class="refsect2" title="Non-standard API"><a 
name="id286954680"></a><h3>Non-standard API</h3><p>The <code 
class="function">malloc_usable_size</code>(<em 
class="parameter"><code></code></em>) function
       returns the usable size of the allocation pointed to by
       <em class="parameter"><code>ptr</code></em>.  </p><p>The <code 
class="function">mallctl</code>(<em class="parameter"><code></code></em>),
       <code class="function">mallctlnametomib</code>(<em 
class="parameter"><code></code></em>), and
@@ -1374,7 +1380,7 @@
             occurred.</p></dd><dt><span class="term"><span 
class="errorname">EFAULT</span></span></dt><dd><p>An interface with side 
effects failed in some way
             not directly related to <code class="function">mallctl*</code>(<em 
class="parameter"><code></code></em>)
             read/write processing.</p></dd></dl></div><p>
-      </p></div><div class="refsect2" title="Experimental API"><a 
name="id286954842"></a><h3>Experimental API</h3><p>The <code 
class="function">allocm</code>(<em class="parameter"><code></code></em>),
+      </p></div><div class="refsect2" title="Experimental API"><a 
name="id286954867"></a><h3>Experimental API</h3><p>The <code 
class="function">allocm</code>(<em class="parameter"><code></code></em>),
       <code class="function">rallocm</code>(<em 
class="parameter"><code></code></em>),
       <code class="function">sallocm</code>(<em 
class="parameter"><code></code></em>),
       <code class="function">dallocm</code>(<em 
class="parameter"><code></code></em>), and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-3.3.1/doc/jemalloc.xml.in 
new/jemalloc-3.4.0/doc/jemalloc.xml.in
--- old/jemalloc-3.3.1/doc/jemalloc.xml.in      2013-03-06 21:04:18.000000000 
+0100
+++ new/jemalloc-3.4.0/doc/jemalloc.xml.in      2013-06-03 06:06:22.000000000 
+0200
@@ -432,7 +432,14 @@
     referenced by the symbolic link named <filename
     class="symlink">/etc/malloc.conf</filename>, and the value of the
     environment variable <envar>MALLOC_CONF</envar>, will be interpreted, in
-    that order, from left to right as options.</para>
+    that order, from left to right as options.  Note that
+    <varname>malloc_conf</varname> may be read before
+    <function>main<parameter/></function> is entered, so the declaration of
+    <varname>malloc_conf</varname> should specify an initializer that contains
+    the final value to be read by jemalloc.  <varname>malloc_conf</varname> is
+    a compile-time setting, whereas <filename
+    class="symlink">/etc/malloc.conf</filename> and <envar>MALLOC_CONF</envar>
+    can be safely set any time prior to program invocation.</para>
 
     <para>An options string is a comma-separated list of option:value pairs.
     There is one key corresponding to each <link
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/jemalloc-3.3.1/include/jemalloc/internal/jemalloc_internal.h.in 
new/jemalloc-3.4.0/include/jemalloc/internal/jemalloc_internal.h.in
--- old/jemalloc-3.3.1/include/jemalloc/internal/jemalloc_internal.h.in 
2013-03-06 21:04:18.000000000 +0100
+++ new/jemalloc-3.4.0/include/jemalloc/internal/jemalloc_internal.h.in 
2013-06-03 06:06:22.000000000 +0200
@@ -278,6 +278,9 @@
 #  ifdef __arm__
 #    define LG_QUANTUM         3
 #  endif
+#  ifdef __aarch64__
+#    define LG_QUANTUM         4
+#  endif
 #  ifdef __hppa__
 #    define LG_QUANTUM         4
 #  endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/jemalloc-3.3.1/src/chunk.c 
new/jemalloc-3.4.0/src/chunk.c
--- old/jemalloc-3.3.1/src/chunk.c      2013-03-06 21:04:18.000000000 +0100
+++ new/jemalloc-3.4.0/src/chunk.c      2013-06-03 06:06:22.000000000 +0200
@@ -214,7 +214,7 @@
     size_t size)
 {
        bool unzeroed;
-       extent_node_t *xnode, *node, *prev, key;
+       extent_node_t *xnode, *node, *prev, *xprev, key;
 
        unzeroed = pages_purge(chunk, size);
        VALGRIND_MAKE_MEM_NOACCESS(chunk, size);
@@ -226,6 +226,8 @@
         * held.
         */
        xnode = base_node_alloc();
+       /* Use xprev to implement conditional deferred deallocation of prev. */
+       xprev = NULL;
 
        malloc_mutex_lock(&chunks_mtx);
        key.addr = (void *)((uintptr_t)chunk + size);
@@ -242,8 +244,6 @@
                node->size += size;
                node->zeroed = (node->zeroed && (unzeroed == false));
                extent_tree_szad_insert(chunks_szad, node);
-               if (xnode != NULL)
-                       base_node_dealloc(xnode);
        } else {
                /* Coalescing forward failed, so insert a new node. */
                if (xnode == NULL) {
@@ -253,10 +253,10 @@
                         * already been purged, so this is only a virtual
                         * memory leak.
                         */
-                       malloc_mutex_unlock(&chunks_mtx);
-                       return;
+                       goto label_return;
                }
                node = xnode;
+               xnode = NULL; /* Prevent deallocation below. */
                node->addr = chunk;
                node->size = size;
                node->zeroed = (unzeroed == false);
@@ -282,9 +282,19 @@
                node->zeroed = (node->zeroed && prev->zeroed);
                extent_tree_szad_insert(chunks_szad, node);
 
-               base_node_dealloc(prev);
+               xprev = prev;
        }
+
+label_return:
        malloc_mutex_unlock(&chunks_mtx);
+       /*
+        * Deallocate xnode and/or xprev after unlocking chunks_mtx in order to
+        * avoid potential deadlock.
+        */
+       if (xnode != NULL)
+               base_node_dealloc(xnode);
+       if (xprev != NULL)
+               base_node_dealloc(prev);
 }
 
 void

--
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to