Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
0f92dccf
Commit
0f92dccf
authored
Sep 04, 2019
by
Guillaume Quintard
Committed by
Martin Blix Grydeland
Nov 12, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Offer a configure --with-unwind switch
Conflicts: .travis.yml bin/varnishd/cache/cache_panic.c
parent
b1db3bf4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
72 additions
and
4 deletions
+72
-4
.travis.yml
.travis.yml
+1
-1
Makefile.am
bin/varnishd/Makefile.am
+5
-0
cache_panic.c
bin/varnishd/cache/cache_panic.c
+47
-0
configure.ac
configure.ac
+19
-3
No files found.
.travis.yml
View file @
0f92dccf
...
...
@@ -40,7 +40,7 @@ before_install:
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
export PATH="/usr/local/opt/sphinx-doc/bin:$PATH"
elif [[ -n "$SAN_FLAGS" ]]; then
export CONFIGURE_ARGS="--enable-developer-warnings --enable-debugging-symbols --disable-stack-protector --with-persistent-storage ${SAN_FLAGS}"
export CONFIGURE_ARGS="--enable-developer-warnings --enable-debugging-symbols --disable-stack-protector --with-persistent-storage
--with-unwind
${SAN_FLAGS}"
export ASAN_OPTIONS=abort_on_error=1,detect_odr_violation=1,detect_leaks=1,detect_stack_use_after_return=1,detect_invalid_pointer_pairs=1,handle_segv=0,handle_sigbus=0,use_sigaltstack=0,disable_coredump=0
export LSAN_OPTIONS=abort_on_error=1,use_sigaltstack=0,suppressions=$(pwd)/tools/lsan.suppr
export TSAN_OPTIONS=abort_on_error=1,halt_on_error=1,use_sigaltstack=0,suppressions=$(pwd)/tools/tsan.suppr
...
...
bin/varnishd/Makefile.am
View file @
0f92dccf
...
...
@@ -173,6 +173,11 @@ varnishd_LDADD = \
@PCRE_LIBS@
\
${
DL_LIBS
}
${
PTHREAD_LIBS
}
${
NET_LIBS
}
${
RT_LIBS
}
${
LIBM
}
if
WITH_UNWIND
varnishd_CFLAGS
+=
-DUNW_LOCAL_ONLY
varnishd_LDADD
+=
${
LIBUNWIND_LIBS
}
endif
noinst_PROGRAMS
=
vhp_gen_hufdec
vhp_gen_hufdec_SOURCES
=
hpack/vhp_gen_hufdec.c
vhp_gen_hufdec_CFLAGS
=
@SAN_CFLAGS@
\
...
...
bin/varnishd/cache/cache_panic.c
View file @
0f92dccf
...
...
@@ -29,7 +29,11 @@
#include "config.h"
#ifdef WITH_UNWIND
#include <libunwind.h>
#else
#include <execinfo.h>
#endif
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
...
...
@@ -575,6 +579,47 @@ pan_sess(struct vsb *vsb, const struct sess *sp)
/*--------------------------------------------------------------------*/
#ifdef WITH_UNWIND
static
void
pan_backtrace
(
struct
vsb
*
vsb
)
{
unw_cursor_t
cursor
;
unw_context_t
uc
;
unw_word_t
ip
,
sp
;
unw_word_t
offp
;
char
fname
[
1024
];
int
ret
;
VSB_printf
(
vsb
,
"Backtrace:
\n
"
);
VSB_indent
(
vsb
,
2
);
ret
=
unw_getcontext
(
&
uc
);
if
(
ret
!=
0
)
{
VSB_printf
(
vsb
,
"Backtrace not available "
"(unw_getcontext returned %d)
\n
"
,
ret
);
return
;
}
unw_init_local
(
&
cursor
,
&
uc
);
if
(
ret
!=
0
)
{
VSB_printf
(
vsb
,
"Backtrace not available "
"(unw_init_local returned %d)
\n
"
,
ret
);
return
;
}
while
(
unw_step
(
&
cursor
)
>
0
)
{
fname
[
0
]
=
'\0'
;
ip
=
sp
=
0
;
unw_get_reg
(
&
cursor
,
UNW_REG_IP
,
&
ip
);
unw_get_reg
(
&
cursor
,
UNW_REG_SP
,
&
sp
);
unw_get_proc_name
(
&
cursor
,
fname
,
sizeof
(
fname
),
&
offp
);
VSB_printf
(
vsb
,
"ip=0x%lx, sp=0x%lx <%s+0x%lx>
\n
"
,
(
long
)
ip
,
(
long
)
sp
,
fname
[
0
]
?
fname
:
"???"
,
offp
);
}
VSB_indent
(
vsb
,
-
2
);
}
#else
/* WITH_UNWIND */
#define BACKTRACE_LEVELS 10
static
void
...
...
@@ -616,6 +661,8 @@ pan_backtrace(struct vsb *vsb)
VSB_indent
(
vsb
,
-
2
);
}
#endif
/* WITH_UNWIND */
/*--------------------------------------------------------------------*/
static
void
__attribute__
((
__noreturn__
))
...
...
configure.ac
View file @
0f92dccf
...
...
@@ -336,9 +336,25 @@ esac
AC_SUBST(JEMALLOC_LDADD)
AC_CHECK_FUNCS([setproctitle])
AC_SEARCH_LIBS(backtrace, [execinfo], [], [
AC_MSG_ERROR([Could not find backtrace() support])
])
# if the default libexecinfo on alpine causes issues, you can use libunwind
AC_ARG_WITH([unwind],
[AS_HELP_STRING([--with-unwind],
[use libunwind to print stacktraces (use libexecinfo otherwise). Recommended on alpine linux. Defaults to no.])])
if test "$with_unwind" = yes; then
PKG_CHECK_MODULES([LIBUNWIND], [libunwind])
AC_DEFINE([WITH_UNWIND], [1],
[Define to 1 to use libunwind instead of libexecinfo])
else
AC_SEARCH_LIBS(backtrace, [execinfo], [], [
AC_MSG_ERROR([Could not find backtrace() support])
])
fi
AM_CONDITIONAL([WITH_UNWIND],
[test "$with_unwind" = yes])
# white lie - we don't actually test it
AC_MSG_CHECKING([whether daemon() works])
case $target in
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment