You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2015/01/10 03:20:23 UTC

[1/3] trafficserver git commit: TS-3280 Fix the bulk free 0xDEADBEEF clearing code.

Repository: trafficserver
Updated Branches:
  refs/heads/5.2.x 998712abb -> cad13d9c6


TS-3280 Fix the bulk free 0xDEADBEEF clearing code.

This is primarily a fix from Brian G.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/cc09ff38
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/cc09ff38
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/cc09ff38

Branch: refs/heads/5.2.x
Commit: cc09ff38a343566f80a05c29282e534d44ec88ca
Parents: 998712a
Author: Leif Hedstrom <zw...@apache.org>
Authored: Thu Jan 8 14:27:35 2015 -0700
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Fri Jan 9 19:17:42 2015 -0700

----------------------------------------------------------------------
 lib/ts/ink_queue.cc | 34 ++++++++++++++++++++++------------
 1 file changed, 22 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/cc09ff38/lib/ts/ink_queue.cc
----------------------------------------------------------------------
diff --git a/lib/ts/ink_queue.cc b/lib/ts/ink_queue.cc
index 9328cff..a841fb3 100644
--- a/lib/ts/ink_queue.cc
+++ b/lib/ts/ink_queue.cc
@@ -296,7 +296,7 @@ ink_freelist_free(InkFreeList * f, void *item)
 }
 
 void
-ink_freelist_free_bulk(ATS_UNUSED InkFreeList *f, ATS_UNUSED void *head, ATS_UNUSED void *tail, ATS_UNUSED size_t num_item)
+ink_freelist_free_bulk(InkFreeList *f, void *head, void *tail, size_t num_item)
 {
 #if TS_USE_FREELIST
 #if !TS_USE_RECLAIMABLE_FREELIST
@@ -312,14 +312,14 @@ ink_freelist_free_bulk(ATS_UNUSED InkFreeList *f, ATS_UNUSED void *head, ATS_UNU
     static const char str[4] = { (char) 0xde, (char) 0xad, (char) 0xbe, (char) 0xef };
 
     // set the entire item to DEADBEEF;
-    void * temp = head;
-    for(size_t i = 0; i<num_item; i++){
-      for (int j = 0; j < (int)f->type_size; j++)
+    void* temp = head;
+    for (size_t i = 0; i<num_item; i++) {
+      for (int j = sizeof(void*); j < (int)f->type_size; j++)
         ((char*)temp)[j] = str[j % 4];
-      temp = *(void **) temp;
+      temp = *ADDRESS_OF_NEXT(temp, 0);
     }
   }
-#endif
+#endif /* DEADBEEF */
 
   while (!result) {
     INK_QUEUE_LD(h, f->head);
@@ -330,22 +330,32 @@ ink_freelist_free_bulk(ATS_UNUSED InkFreeList *f, ATS_UNUSED void *head, ATS_UNU
       ink_fatal(1, "ink_freelist_free: bad list");
     if (TO_PTR(FREELIST_POINTER(h)))
       fake_global_for_ink_queue = *(int *) TO_PTR(FREELIST_POINTER(h));
-#endif
+#endif /* SANITY */
     *adr_of_next = FREELIST_POINTER(h);
     SET_FREELIST_POINTER_VERSION(item_pair, FROM_PTR(head), FREELIST_VERSION(h));
     INK_MEMORY_BARRIER;
 #if TS_HAS_128BIT_CAS
        result = ink_atomic_cas((__int128_t*) & f->head, h.data, item_pair.data);
-#else
+#else /* !TS_HAS_128BIT_CAS */
        result = ink_atomic_cas((int64_t *) & f->head, h.data, item_pair.data);
-#endif
+#endif /* TS_HAS_128BIT_CAS */
   }
 
   ink_atomic_increment((int *) &f->used, -1 * num_item);
   ink_atomic_increment(&fastalloc_mem_in_use, -(int64_t) f->type_size * num_item);
-#endif
-#else
+#else /* TS_USE_RECLAIMABLE_FREELIST */
+  // Avoid compiler warnings
+  (void)f;
+  (void)head;
+  (void)tail;
+  (void)num_item;
+#endif /* !TS_USE_RECLAIMABLE_FREELIST */
+#else /* !TS_USE_FREELIST */
   void * item = head;
+
+  // Avoid compiler warnings
+  (void)tail;
+
   if (f->alignment) {
     for (size_t i = 0; i < num_item && item; ++i, item = *(void **)item) {
       ats_memalign_free(item);
@@ -355,7 +365,7 @@ ink_freelist_free_bulk(ATS_UNUSED InkFreeList *f, ATS_UNUSED void *head, ATS_UNU
       ats_free(item);
     }
   }
-#endif
+#endif /* TS_USE_FREELIST */
 }
 
 void


[2/3] trafficserver git commit: TS-3280: Segfault in new freelist bulk freeing

Posted by zw...@apache.org.
TS-3280: Segfault in new freelist bulk freeing


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/18ba34c5
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/18ba34c5
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/18ba34c5

Branch: refs/heads/5.2.x
Commit: 18ba34c57a60feed582f38ede3b69bb238f82f46
Parents: cc09ff3
Author: Brian Geffon <br...@apache.org>
Authored: Fri Jan 9 15:08:57 2015 -0800
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Fri Jan 9 19:18:05 2015 -0700

----------------------------------------------------------------------
 lib/ts/ink_queue.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/18ba34c5/lib/ts/ink_queue.cc
----------------------------------------------------------------------
diff --git a/lib/ts/ink_queue.cc b/lib/ts/ink_queue.cc
index a841fb3..7847b2d 100644
--- a/lib/ts/ink_queue.cc
+++ b/lib/ts/ink_queue.cc
@@ -316,7 +316,8 @@ ink_freelist_free_bulk(InkFreeList *f, void *head, void *tail, size_t num_item)
     for (size_t i = 0; i<num_item; i++) {
       for (int j = sizeof(void*); j < (int)f->type_size; j++)
         ((char*)temp)[j] = str[j % 4];
-      temp = *ADDRESS_OF_NEXT(temp, 0);
+      *ADDRESS_OF_NEXT(temp, 0) = FROM_PTR(*ADDRESS_OF_NEXT(temp,0));
+      temp = TO_PTR(*ADDRESS_OF_NEXT(temp, 0));
     }
   }
 #endif /* DEADBEEF */


[3/3] trafficserver git commit: Added TS-3280, backported

Posted by zw...@apache.org.
Added TS-3280, backported


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/cad13d9c
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/cad13d9c
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/cad13d9c

Branch: refs/heads/5.2.x
Commit: cad13d9c6fa6454f7bd3664bdae7e1a91a871e94
Parents: 18ba34c
Author: Leif Hedstrom <zw...@apache.org>
Authored: Fri Jan 9 19:20:15 2015 -0700
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Fri Jan 9 19:20:15 2015 -0700

----------------------------------------------------------------------
 CHANGES | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/cad13d9c/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 4edf598..b4019fe 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 5.2.0
 
+  *) [TS-3280] Segfault in new freelist bulk freeing (in debug mode).
+
   *) [TS-3276] Fix cache backwards compatibility issue.
 
   *) [TS-3274] Forward port fix for cache fixup race condition in ram cache