Skip to content

Commit

Permalink
Asan: Disable asan for CentOS and use statically link if possible. v5…
Browse files Browse the repository at this point in the history
….0.127 (ossrs#3347)

1. Disable asan for all CentOS by default, however user could enable it.
2. Link asan statically if possible.
  • Loading branch information
chen-guanghua authored and winlinvip committed Jan 2, 2023
1 parent 02a18b3 commit 793f579
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 8 deletions.
2 changes: 1 addition & 1 deletion trunk/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ WORKDIR /srs/trunk
# Build and install SRS.
# Note that SRT is enabled by default, so we configure without --srt=on.
# Note that we have copied all files by make install.
RUN ./configure --gb28181=on --sanitizer-static=on ${CONFARGS} && make ${MAKEARGS} && make install
RUN ./configure --gb28181=on ${CONFARGS} && make ${MAKEARGS} && make install

############################################################
# dist
Expand Down
13 changes: 12 additions & 1 deletion trunk/auto/depends.sh
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,18 @@ if [[ $SRS_SANITIZER == YES && $OS_IS_X86_64 == YES ]]; then
fi
fi

if [[ $SRS_SANITIZER == YES && $OS_IS_X86_64 == YES ]]; then
if [[ $SRS_SANITIZER == YES && $OS_IS_X86_64 == YES && $SRS_SANITIZER_STATIC == NO ]]; then
echo 'int main() { return 0; }' > ${SRS_OBJS}/test_sanitizer.c &&
gcc -fsanitize=address -fno-omit-frame-pointer -static-libasan -g -O0 ${SRS_OBJS}/test_sanitizer.c \
-o ${SRS_OBJS}/test_sanitizer 1>/dev/null 2>&1;
ret=$?; rm -rf ${SRS_OBJS}/test_sanitizer*
if [[ $ret -eq 0 ]]; then
echo "link static-libasan"
SRS_SANITIZER_STATIC=YES
fi
fi

if [[ $SRS_SANITIZER == YES && $OS_IS_X86_64 == YES && $SRS_SANITIZER_LOG == NO ]]; then
echo "#include <sanitizer/asan_interface.h>" > ${SRS_OBJS}/test_sanitizer.c &&
echo "int main() { return 0; }" >> ${SRS_OBJS}/test_sanitizer.c &&
gcc -fsanitize=address -fno-omit-frame-pointer -g -O0 ${SRS_OBJS}/test_sanitizer.c \
Expand Down
9 changes: 8 additions & 1 deletion trunk/auto/options.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ SRS_LOG_LEVEL_V2=YES
# Experts options.
SRS_USE_SYS_SSL=NO # Use system ssl(-lssl) if required.
SRS_VALGRIND=NO
SRS_SANITIZER=YES
SRS_SANITIZER=NO
SRS_SANITIZER_STATIC=NO
SRS_SANITIZER_LOG=NO
SRS_BUILD_TAG= # Set the object files tag name.
Expand Down Expand Up @@ -503,6 +503,13 @@ function apply_auto_options() {
SRS_FFMPEG_FIT=YES
fi

# Enable asan, but disable for Centos
# @see https://github.com/ossrs/srs/issues/3347
if [[ $SRS_SANITIZER == NO && $OS_IS_CENTOS != YES ]]; then
echo "Enable asan by auto options."
SRS_SANITIZER=YES
fi

# If enable gperf, disable sanitizer.
if [[ $SRS_GPERF == YES && $SRS_SANITIZER == YES ]]; then
echo "Disable sanitizer for gperf"
Expand Down
5 changes: 0 additions & 5 deletions trunk/configure
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,6 @@ if [[ $SRS_STATIC == YES ]]; then
SrsLinkOptions="${SrsLinkOptions} -static-libstdc++";
fi

# For asan(Google Address Sanitizer)
if [[ $SRS_SANITIZER == YES && $OS_IS_X86_64 == YES && $SRS_SANITIZER_STATIC == YES ]]; then
SrsLinkOptions="${SrsLinkOptions} -static-libasan";
fi

# For coverage.
if [[ $SRS_GCOV == YES ]]; then
SrsLinkOptions="${SrsLinkOptions} ${SrsGcov}";
Expand Down

0 comments on commit 793f579

Please sign in to comment.