Browse Source

AppVeyor: Try to find segfault in debug build (not reproducible in local debugger) (1/?)

bel2125 7 years ago
parent
commit
5141692ff3
3 changed files with 388 additions and 194 deletions
  1. 0 177
      appveyor.yml
  2. 386 0
      appveyor.yml.bkup
  3. 2 17
      test/private.c

+ 0 - 177
appveyor.yml

@@ -22,52 +22,6 @@ environment:
   c_standard: auto
   c_standard: auto
   cxx_standard: auto
   cxx_standard: auto
   matrix:
   matrix:
-    # Use default values
-    - id: Default-x86
-      compiler: msvc-19-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: NO
-      enable_ssl: YES
-      enable_websockets: NO
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x86
-    - id: Default-x64
-      compiler: msvc-19-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: NO
-      enable_ssl: YES
-      enable_websockets: NO
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x64
-    # Use default values
-    - id: Full-x86
-      compiler: msvc-19-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x86
-    - id: Full-x64
-      compiler: msvc-19-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x64
     # Debug builds
     # Debug builds
     - id: Full-x86-Debug
     - id: Full-x86-Debug
       compiler: msvc-19-seh
       compiler: msvc-19-seh
@@ -91,137 +45,6 @@ environment:
       no_caching: NO
       no_caching: NO
       configuration: Debug
       configuration: Debug
       platform: x64
       platform: x64
-    # Minimum settings
-    - id: Minimal-x86
-      compiler: msvc-19-seh
-      build_shared: NO
-      no_files: YES
-      enable_ipv6: NO
-      enable_ssl: NO
-      enable_websockets: NO
-      no_cgi: YES
-      no_caching: YeS
-      configuration: Release
-      platform: x86
-    - id: Minimal-x64
-      compiler: msvc-19-seh
-      build_shared: NO
-      no_files: YES
-      enable_ipv6: NO
-      enable_ssl: NO
-      enable_websockets: NO
-      no_cgi: YES
-      no_caching: YeS
-      configuration: Release
-      platform: x64
-    # Test shared and debug build
-    - id: Shared-default-x86
-      compiler: msvc-19-seh
-      build_shared: YES
-      no_files: NO
-      enable_ipv6: NO
-      enable_ssl: YES
-      enable_websockets: NO
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x86
-    - id: Shared-default-x64
-      compiler: msvc-19-seh
-      build_shared: YES
-      no_files: NO
-      enable_ipv6: NO
-      enable_ssl: YES
-      enable_websockets: NO
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x64
-    # MinGW
-    - id: Full-GCC-x64
-      compiler: gcc-5.1.0-posix
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x64
-    # Visual Studio 2010
-    - id: Full-VS2010-x86
-      compiler: msvc-16-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x86
-    # Visual Studio 2012
-    - id: Full-VS2012-x86
-      compiler: msvc-17-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x86
-    # Visual Studio 2013
-    - id: Full-VS2013-x86
-      compiler: msvc-18-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x86
-    - id: Full-VS2013-x64
-      compiler: msvc-18-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x64
-    # Visual Studio 2015 is default
-    # Visual Studio 2017 is not yet default
-    - id: Full-VS2017-x86
-      compiler: msvc-20-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x86
-      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
-    - id: Full-VS2017-x64
-      compiler: msvc-20-seh
-      build_shared: NO
-      no_files: NO
-      enable_ipv6: YES
-      enable_ssl: YES
-      enable_websockets: YES
-      no_cgi: NO
-      no_caching: NO
-      configuration: Release
-      platform: x64
-      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
 
 
 
 
 install:
 install:

+ 386 - 0
appveyor.yml.bkup

@@ -0,0 +1,386 @@
+version: '{build}'
+
+
+build:
+# no automatic build in script mode
+
+
+skip_commits:
+  # Builds just testing something on Travis CI don't need to be 
+  # done on AppVeyor
+  message: /\[Travis\]/
+  # Dont build, if only documentation was changed
+  files:
+  - '**/*.md'
+
+
+environment:
+  enable_cxx: NO
+  enable_ssl_dynamic_loading: YES
+  enable_lua: NO
+  enable_lua_shared: NO
+  c_standard: auto
+  cxx_standard: auto
+  matrix:
+    # Use default values
+    - id: Default-x86
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: NO
+      enable_ssl: YES
+      enable_websockets: NO
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x86
+    - id: Default-x64
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: NO
+      enable_ssl: YES
+      enable_websockets: NO
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x64
+    # Use default values
+    - id: Full-x86
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x86
+    - id: Full-x64
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x64
+    # Debug builds
+    - id: Full-x86-Debug
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Debug
+      platform: x86
+    - id: Full-x64-Debug
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Debug
+      platform: x64
+    # Minimum settings
+    - id: Minimal-x86
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: YES
+      enable_ipv6: NO
+      enable_ssl: NO
+      enable_websockets: NO
+      no_cgi: YES
+      no_caching: YeS
+      configuration: Release
+      platform: x86
+    - id: Minimal-x64
+      compiler: msvc-19-seh
+      build_shared: NO
+      no_files: YES
+      enable_ipv6: NO
+      enable_ssl: NO
+      enable_websockets: NO
+      no_cgi: YES
+      no_caching: YeS
+      configuration: Release
+      platform: x64
+    # Test shared and debug build
+    - id: Shared-default-x86
+      compiler: msvc-19-seh
+      build_shared: YES
+      no_files: NO
+      enable_ipv6: NO
+      enable_ssl: YES
+      enable_websockets: NO
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x86
+    - id: Shared-default-x64
+      compiler: msvc-19-seh
+      build_shared: YES
+      no_files: NO
+      enable_ipv6: NO
+      enable_ssl: YES
+      enable_websockets: NO
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x64
+    # MinGW
+    - id: Full-GCC-x64
+      compiler: gcc-5.1.0-posix
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x64
+    # Visual Studio 2010
+    - id: Full-VS2010-x86
+      compiler: msvc-16-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x86
+    # Visual Studio 2012
+    - id: Full-VS2012-x86
+      compiler: msvc-17-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x86
+    # Visual Studio 2013
+    - id: Full-VS2013-x86
+      compiler: msvc-18-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x86
+    - id: Full-VS2013-x64
+      compiler: msvc-18-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x64
+    # Visual Studio 2015 is default
+    # Visual Studio 2017 is not yet default
+    - id: Full-VS2017-x86
+      compiler: msvc-20-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x86
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+    - id: Full-VS2017-x64
+      compiler: msvc-20-seh
+      build_shared: NO
+      no_files: NO
+      enable_ipv6: YES
+      enable_ssl: YES
+      enable_websockets: YES
+      no_cgi: NO
+      no_caching: NO
+      configuration: Release
+      platform: x64
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+
+
+install:
+  # Derive some extra information
+  - set build_type=%configuration%
+  - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_name=%%a")
+  - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_version=%%b")
+  - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_threading=%%c")
+  - if "%platform%"=="x64" (set arch=x86_64)
+  - if "%platform%"=="x86" (set arch=i686)
+  # Download the specific version of MinGW
+  - if "%compiler_name%"=="gcc" (@set "mingw_output_folder=C:\mingw-builds")
+  - if "%compiler_name%"=="gcc" (
+      @for /f %%a in (
+        'call mingw.cmd
+          /version "%compiler_version%"
+          /arch "%arch%"
+          /threading "%compiler_threading%"
+          "%mingw_output_folder%"'
+      ) do @set "compiler_path=%%a"
+    )
+  - if "%compiler_name%"=="gcc" (@set "mingw_log_folder=%mingw_output_folder%\logs")
+  - if exist "%mingw_log_folder%" @for /f %%f in ('dir /b /oD /tc "%mingw_log_folder%"') do @set "mingw_log_file=%mingw_log_folder%\%%f"
+  - if exist "%mingw_log_file%" powershell Push-AppveyorArtifact "%mingw_log_file%" -FileName mingw-download.log
+  # Get OpenSSL
+  #
+  # OpenSSL should already be installed, according to
+  # - http://help.appveyor.com/discussions/questions/1132-openssl-installation-issues
+  # - https://github.com/appveyor/ci/issues/576
+  #
+  - cmd: set PATH=%PATH%;C:\OpenSSL-Win32;C:\OpenSSL-Win64
+  - dir C:\OpenSSL-Win32
+  - dir C:\OpenSSL-Win64
+  - path
+
+
+before_build:
+  # Remove sh.exe from the path otherwise CMake will complain:
+  # "sh.exe was found in your PATH, here: C:/Program Files/Git/usr/bin/sh.exe"
+  # and the MinGW build will not work (the Visual Studio build does not care).
+  # See http://help.appveyor.com/discussions/problems/3193-cmake-building-for-mingw-issue-with-git-shexe
+  # The entire directory containing sh.exe could be removed from the PATH environment:
+  # - set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
+  # However, this will also remove all other programs in this directory from the PATH.
+  # In particular "patch" is still required.
+  # So, just rename sh.exe:
+  - ren "C:\Program Files\Git\usr\bin\sh.exe" _sh.exe
+  # Set up mingw commands
+  - if "%compiler_name%"=="gcc" (set "generator=MinGW Makefiles")
+  - if "%compiler_name%"=="gcc" (set "build=mingw32-make -j4")
+  - if "%compiler_name%"=="gcc" (set "test=mingw32-make test")
+  # MSVC specific commands
+  # Note: The minimum version officially supported for CivetWeb is VS2010. Older ones might work or not.
+  - if "%compiler_version%"=="14" (set "vs_version=8" & set "vs_year=2005")
+  - if "%compiler_version%"=="15" (set "vs_version=9" & set "vs_year=2008")
+  - if "%compiler_version%"=="16" (set "vs_version=10" & set "vs_year=2010")
+  - if "%compiler_version%"=="17" (set "vs_version=11" & set "vs_year=2012")
+  - if "%compiler_version%"=="18" (set "vs_version=12" & set "vs_year=2013")
+  - if "%compiler_version%"=="19" (set "vs_version=14" & set "vs_year=2015")
+  - if "%compiler_version%"=="20" (set "vs_version=15" & set "vs_year=2017")
+  - if "%compiler_name%"=="msvc" (set "generator=Visual Studio %vs_version% %vs_year%")
+  - if "%compiler_name%"=="msvc" (
+      if "%platform%"=="x64" (
+        set "generator=%generator% Win64"
+      )
+    )
+  - if %compiler_version% gtr 9 (set platform=%platform:x86=Win32%)
+  - if "%compiler_name%"=="msvc" (set "msbuild_opts=/clp:OnlyErrors;OnlyWarnings /nologo /m /v:m")
+  - if "%compiler_name%"=="msvc" (set "build=msbuild %msbuild_opts% /p:Configuration=%configuration% /p:Platform=%platform% civetweb.sln")
+  - if "%compiler_name%"=="msvc" (set "test=msbuild %msbuild_opts% RUN_TESTS.vcxproj")
+  # Add the compiler path if needed
+  - if not "%compiler_path%"=="" (set "PATH=%PATH%;%compiler_path%")
+  # git bash conflicts with MinGW makefiles
+  - if "%generator%"=="MinGW Makefiles" (set "PATH=%PATH:C:\Program Files (x86)\Git\bin=%")
+  # Useful locations
+  - set "source_path=%cd%"
+  - set "output_path=%source_path%\output"
+  - set "build_path=%output_path%\build"
+  - set "install_path=%output_path%\install"
+  - set "third_party_dir=C:\third-party"
+  # Check some settings of the build server
+  - ver
+  - cd
+  - dir
+  - ipconfig /all
+  # Generate the build scripts with CMake
+  - mkdir "%build_path%"
+  - cd "%build_path%"
+  - cmake --version
+  - appveyor AddMessage -Category Information "Generating '%generator%'"
+  - cmake
+    -G "%generator%"
+    -DCMAKE_BUILD_TYPE=%build_type%
+    -DBUILD_SHARED_LIBS=%build_shared%
+    -DCIVETWEB_SERVE_NO_FILES=%no_files%
+    "-DCIVETWEB_THIRD_PARTY_DIR=%third_party_dir:\=\\%"
+    -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES
+    -DCIVETWEB_ENABLE_SSL=%enable_ssl%
+    -DCIVETWEB_DISABLE_CGI=%no_cgi%
+    -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=%enable_ssl_dynamic_loading%
+    -DCIVETWEB_ENABLE_WEBSOCKETS=%enable_websockets%
+    -DCIVETWEB_ENABLE_CXX=%enable_cxx%
+    -DCIVETWEB_ENABLE_LUA=%enable_lua%
+    -DCIVETWEB_ENABLE_LUA_SHARED=%enable_lua_shared%
+    -DCIVETWEB_DISABLE_CACHING=%no_caching%
+    -DCIVETWEB_C_STANDARD=%c_standard%
+    -DCIVETWEB_CXX_STANDARD=%cxx_standard%
+    "%source_path%"
+  - powershell Push-AppveyorArtifact CMakeCache.txt
+  - cd "%source_path%"
+
+build_script:
+  - cd
+  - cd "%build_path%"
+  - appveyor AddMessage -Category Information "Build command '%build%'"
+  - cmd /c "%build%"
+  - cd "%source_path%"
+
+test_script:
+  - cd "%build_path%"
+  - appveyor AddMessage -Category Information "Test command '%build%'"
+  - set CTEST_OUTPUT_ON_FAILURE=1
+  - cmd /c "%test%"
+  - cd "%source_path%"
+
+  - set "output_path=%source_path%\output"
+  - set "build_path=%output_path%\build"
+  - set "install_path=%output_path%\install"
+  - set "third_party_dir=C:\third-party"
+
+after_test:
+  - echo "Current directory:"
+  - cd
+  - dir
+  - md dist
+  - if "%build_type%"=="Release" (cmake "-DCMAKE_INSTALL_PREFIX=%install_path%" -P "%build_path%/cmake_install.cmake")
+  - dir dist\
+  - echo "Output directory:"
+  - dir %output_path%
+  - echo "Build directory:"
+  - dir %build_path%
+  - if "%build_type%"=="Release" (echo "Install directory:")
+  - if "%build_type%"=="Release" (dir %install_path%)
+  - if "%build_type%"=="Release" (dir %install_path%\bin)
+  - if "%build_type%"=="Release" (dir %install_path%\include)
+  - if "%build_type%"=="Release" (dir %install_path%\lib)
+  - if "%build_type%"=="Release" (copy "%install_path%"\include dist\)
+  - if "%build_type%"=="Release" (copy "%install_path%"\bin\*.exe dist\)
+  - echo "Dist directory:"
+  - dir dist\
+
+matrix:
+  fast_finish: false
+
+cache:
+  - C:\mingw-builds -> mingw.cmd
+  - C:\third-party -> **\CMakeLists.txt
+  - C:\ssl
+
+artifacts:
+  - path: dist\*
+

+ 2 - 17
test/private.c

@@ -493,55 +493,40 @@ START_TEST(test_mg_vsnprintf)
 	char buf[16];
 	char buf[16];
 	int is_trunc;
 	int is_trunc;
 
 
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
-
 	memset(buf, 0, sizeof(buf));
 	memset(buf, 0, sizeof(buf));
 	mark_point();
 	mark_point();
-
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
-
+/*
 	is_trunc = 777;
 	is_trunc = 777;
 	mg_snprintf(NULL, &is_trunc, buf, 10, "%8i", 123);
 	mg_snprintf(NULL, &is_trunc, buf, 10, "%8i", 123);
 	ck_assert_str_eq(buf, "     123");
 	ck_assert_str_eq(buf, "     123");
 	ck_assert_int_eq(is_trunc, 0);
 	ck_assert_int_eq(is_trunc, 0);
 
 
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
-
 	is_trunc = 777;
 	is_trunc = 777;
 	mg_snprintf(NULL, &is_trunc, buf, 10, "%9i", 123);
 	mg_snprintf(NULL, &is_trunc, buf, 10, "%9i", 123);
 	ck_assert_str_eq(buf, "      123");
 	ck_assert_str_eq(buf, "      123");
 	ck_assert_int_eq(is_trunc, 0);
 	ck_assert_int_eq(is_trunc, 0);
 
 
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
-
 	is_trunc = 777;
 	is_trunc = 777;
 	mg_snprintf(NULL, &is_trunc, buf, 9, "%9i", 123);
 	mg_snprintf(NULL, &is_trunc, buf, 9, "%9i", 123);
 	ck_assert_str_eq(buf, "      12");
 	ck_assert_str_eq(buf, "      12");
 	ck_assert_int_eq(is_trunc, 1);
 	ck_assert_int_eq(is_trunc, 1);
 
 
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
-
 	is_trunc = 777;
 	is_trunc = 777;
 	mg_snprintf(NULL, &is_trunc, buf, 8, "%9i", 123);
 	mg_snprintf(NULL, &is_trunc, buf, 8, "%9i", 123);
 	ck_assert_str_eq(buf, "      1");
 	ck_assert_str_eq(buf, "      1");
 	ck_assert_int_eq(is_trunc, 1);
 	ck_assert_int_eq(is_trunc, 1);
 
 
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
-
 	is_trunc = 777;
 	is_trunc = 777;
 	mg_snprintf(NULL, &is_trunc, buf, 7, "%9i", 123);
 	mg_snprintf(NULL, &is_trunc, buf, 7, "%9i", 123);
 	ck_assert_str_eq(buf, "      ");
 	ck_assert_str_eq(buf, "      ");
 	ck_assert_int_eq(is_trunc, 1);
 	ck_assert_int_eq(is_trunc, 1);
 
 
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
-
 	is_trunc = 777;
 	is_trunc = 777;
 	strcpy(buf, "1234567890");
 	strcpy(buf, "1234567890");
 	mg_snprintf(NULL, &is_trunc, buf, 0, "%i", 543);
 	mg_snprintf(NULL, &is_trunc, buf, 0, "%i", 543);
 	ck_assert_str_eq(buf, "1234567890");
 	ck_assert_str_eq(buf, "1234567890");
 	ck_assert_int_eq(is_trunc, 1);
 	ck_assert_int_eq(is_trunc, 1);
-
-	printf("test_mg_vsnprintf: %u\n", __LINE__);
+*/
 }
 }
 END_TEST
 END_TEST