diff --git a/trunk/Dockerfile b/trunk/Dockerfile index 98c506d7124..17a269fa160 100644 --- a/trunk/Dockerfile +++ b/trunk/Dockerfile @@ -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 --h265=on --sanitizer-static=on ${CONFARGS} && make ${MAKEARGS} && make install +RUN ./configure --gb28181=on --h265=on ${CONFARGS} && make ${MAKEARGS} && make install ############################################################ # dist diff --git a/trunk/auto/depends.sh b/trunk/auto/depends.sh index 6a69e0c0c24..61f76197fd1 100755 --- a/trunk/auto/depends.sh +++ b/trunk/auto/depends.sh @@ -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==RESERVED ]]; 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 == RESERVED ]]; then echo "#include " > ${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 \ diff --git a/trunk/auto/options.sh b/trunk/auto/options.sh index 159309d6b8f..52cc4e17f2d 100755 --- a/trunk/auto/options.sh +++ b/trunk/auto/options.sh @@ -69,9 +69,9 @@ 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_STATIC=NO -SRS_SANITIZER_LOG=NO +SRS_SANITIZER=RESERVED +SRS_SANITIZER_STATIC=RESERVED +SRS_SANITIZER_LOG=RESERVED SRS_BUILD_TAG= # Set the object files tag name. SRS_CLEAN=YES # Whether do "make clean" when configure. SRS_SIMULATOR=NO # Whether enable RTC simulate API. @@ -512,6 +512,13 @@ function apply_auto_options() { SRS_SANITIZER=NO fi + # For centos, default disable asan + # @see https://github.com/ossrs/srs/issues/3347 + if [[ $SRS_SANITIZER == RESERVED && $OS_IS_CENTOS != YES && $OS_IS_X86_64 == YES ]]; then + echo "Disable asan for Centos" + SRS_SANITIZER=YES + fi + # if transcode/ingest specified, requires the ffmpeg stub classes. SRS_FFMPEG_STUB=NO if [[ $SRS_TRANSCODE == YES ]]; then SRS_FFMPEG_STUB=YES; fi diff --git a/trunk/configure b/trunk/configure index fb0c51b88a2..b1ea6f10903 100755 --- a/trunk/configure +++ b/trunk/configure @@ -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}";