On 2019-10-08 12:44, William Tu wrote:
On Tue, Oct 08, 2019 at 10:04:17AM -0700, David Wilder wrote:
Since commit e2ed6fbeb1, Ci on ppc64le with Ubuntu 16.04.6 LTS throws
this error:

lib/fatal-signal.c: In function 'send_backtrace_to_monitor':
lib/fatal-signal.c:168:9: error: variable 'dep' might be clobbered by
'longjmp' or 'vfork' [-Werror=clobbered]
     int dep;

Declaring dep as a volatile int.

Signed-off-by: David Wilder <[email protected]>
---
 lib/fatal-signal.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/fatal-signal.c b/lib/fatal-signal.c
index 7733850d5..09f7c6ecf 100644
--- a/lib/fatal-signal.c
+++ b/lib/fatal-signal.c
@@ -165,7 +165,8 @@ fatal_signal_add_hook(void (*hook_cb)(void *aux), void (*cancel_cb)(void *aux),
  */
 static inline void
 send_backtrace_to_monitor(void) {
-    int dep;
+ /* volatile added to prevent a "clobbered" error on ppc64le with gcc */
+    volatile int dep;
     struct unw_backtrace unw_bt[UNW_MAX_DEPTH];
     unw_cursor_t cursor;
     unw_context_t uc;
--
2.23.0.162.gf1d4a28

Thank you for testing it on ppc64!
I'm not able to reproduce the issue on x86_64.

And I don't understand where do we call setjmp and longjmp?
Is it the case that:
unw_getcontext/unw_init_local is calling setjmp
and
unw_get_reg/unw_get_proc_name is calling longjmp while it's
scanning back the stack?

Looking at the source code of libunwind, I couldn't quite
understand how setjmp/longjmp is used here.

Regards,
William

Hi William
This is an issue with gcc incorrectly generating the warning. I found reports against gcc for this issue. I tried but was unable to isolate the problem to a gcc version. Gcc v8.2.1 in rhel8 did not have the problem, however v8 in ubuntu 16.04 still had the issue. As I was unable to flag the version gcc I chose this solution over a #pragma.

PS: I recently starting running Ci against ppc64le, travis_ci.org is now supporting (in beta) ppc64le. I hope to soon push changes to enable a ppc64le Ci for ovs.

Regards
David
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to