From: Kefu Chai Date: Thu, 25 Feb 2016 04:19:06 +0000 (+0800) Subject: log: segv in a portable way X-Git-Tag: v10.1.0~251^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c05300b182f007695ef792bcd45e24bc1d5330d4;p=ceph.git log: segv in a portable way this piece of code creates a SEGV from logging code to verify a bug fix at e3fe18a. clang will delete the null-referencing code. so we need to either - pass -Wnonull-dereference to $(CC) - or use __builtin_trap() offered by GCC/clang - or use `volatile` seems volatile is easier and probably more portable. Fixes: #14856 Signed-off-by: Kefu Chai --- diff --git a/src/log/Log.cc b/src/log/Log.cc index ee4039608f9c..8cfdc0b5fd8a 100644 --- a/src/log/Log.cc +++ b/src/log/Log.cc @@ -190,7 +190,7 @@ void Log::submit_entry(Entry *e) m_queue_mutex_holder = pthread_self(); if (m_inject_segv) - *(int *)(0) = 0xdead; + *(volatile int *)(0) = 0xdead; // wait for flush to catch up while (m_new.m_len > m_max_new)