Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Dec 2024 11:07:15 GMT
From:      Gleb Popov <arrowd@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 6a69e4b5a8b4 - main - lang/dotnet[-runtime]: Use bundled libunwind in hope to avoiding random crashes
Message-ID:  <202412151107.4BFB7Fbb057280@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by arrowd:

URL: https://cgit.FreeBSD.org/ports/commit/?id=6a69e4b5a8b407997e620cfe4e2b969cf274de9e

commit 6a69e4b5a8b407997e620cfe4e2b969cf274de9e
Author:     Gleb Popov <arrowd@FreeBSD.org>
AuthorDate: 2024-12-10 18:17:31 +0000
Commit:     Gleb Popov <arrowd@FreeBSD.org>
CommitDate: 2024-12-15 11:06:35 +0000

    lang/dotnet[-runtime]: Use bundled libunwind in hope to avoiding random crashes
    
    Co-authored-by: Szczepan Ćwikliński <sec@thinkcode.pl>
---
 lang/dotnet-runtime/Makefile                      |  1 +
 lang/dotnet-runtime/files/patch-bundled-libunwind | 42 +++++++++++++++++++++++
 lang/dotnet/Makefile                              |  2 +-
 lang/dotnet/files/patch-bundled-libunwind         | 42 +++++++++++++++++++++++
 4 files changed, 86 insertions(+), 1 deletion(-)

diff --git a/lang/dotnet-runtime/Makefile b/lang/dotnet-runtime/Makefile
index 60c84558eaf3..4dc4826ccdda 100644
--- a/lang/dotnet-runtime/Makefile
+++ b/lang/dotnet-runtime/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	dotnet-host
 DISTVERSIONPREFIX=	v
 DISTVERSION=	9.0.0
+PORTREVISION=	1
 CATEGORIES=	lang devel
 
 MAINTAINER=	arrowd@FreeBSD.org
diff --git a/lang/dotnet-runtime/files/patch-bundled-libunwind b/lang/dotnet-runtime/files/patch-bundled-libunwind
new file mode 100644
index 000000000000..224365ac72d0
--- /dev/null
+++ b/lang/dotnet-runtime/files/patch-bundled-libunwind
@@ -0,0 +1,42 @@
+Use bundled libunwind until at least
+
+https://github.com/libunwind/libunwind/issues/715
+
+is fixed. It is also believed that using bundled libunwind may help against
+random crashes on amd64 too.
+
+--- src/native/corehost/apphost/static/CMakeLists.txt.orig
++++ src/native/corehost/apphost/static/CMakeLists.txt
+@@ -244,7 +244,7 @@ endif(CLR_CMAKE_TARGET_APPLE)
+
+ # On *BSD, we always use the libunwind that's part of the OS
+ if(CLR_CMAKE_TARGET_FREEBSD)
+-  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1)
++  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0)
+ endif()
+
+ if(CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_APPLE)
+
+--- src/coreclr/pal/src/CMakeLists.txt.orig
++++ src/coreclr/pal/src/CMakeLists.txt
+@@ -1,7 +1,7 @@
+ if(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU)
+   # On OSX and *BSD, we use the libunwind that's part of the OS
+   # On Haiku, we used a special port of libunwind
+-  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1)
++  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0)
+ endif(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU)
+
+ if(NOT DEFINED ENV{ROOTFS_DIR})
+
+--- src/native/external/libunwind.cmake.orig
++++ src/native/external/libunwind.cmake
+@@ -96,7 +96,7 @@ elseif(CLR_CMAKE_TARGET_FREEBSD)
+     set(libunwind_la_SOURCES_arm_os             arm/Gos-freebsd.c)
+     set(libunwind_la_SOURCES_arm_os_local       arm/Los-freebsd.c)
+     set(libunwind_la_SOURCES_aarch64_os         aarch64/Gos-freebsd.c)
+-    set(libunwind_la_SOURCES_aarch64_os_local   aarch64/Los-freebsd.c)
++    set(libunwind_la_SOURCES_aarch64_os_local   aarch64/Los-freebsd.c aarch64/setcontext.S)
+     list(APPEND libunwind_coredump_la_SOURCES   coredump/_UCD_access_reg_freebsd.c)
+ elseif(CLR_CMAKE_HOST_SUNOS)
+     set(libunwind_la_SOURCES_os                 ${libunwind_la_SOURCES_os_solaris})
diff --git a/lang/dotnet/Makefile b/lang/dotnet/Makefile
index be2f965dde8c..03aa7e3bec90 100644
--- a/lang/dotnet/Makefile
+++ b/lang/dotnet/Makefile
@@ -1,7 +1,7 @@
 PORTNAME=	dotnet
 DISTVERSIONPREFIX=	v
 DISTVERSION=	${DOTNETVERSION}.0
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	lang devel
 MASTER_SITES=	https://github.com/dotnet/dotnet/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/release.json?dummy=/:dotnetmanifest \
 		https://github.com/sec/dotnet-core-freebsd-source-build/releases/download/9.0.0-rc.2-native/:bootstrap
diff --git a/lang/dotnet/files/patch-bundled-libunwind b/lang/dotnet/files/patch-bundled-libunwind
new file mode 100644
index 000000000000..72082263884c
--- /dev/null
+++ b/lang/dotnet/files/patch-bundled-libunwind
@@ -0,0 +1,42 @@
+Use bundled libunwind until at least
+
+https://github.com/libunwind/libunwind/issues/715
+
+is fixed. It is also believed that using bundled libunwind may help against
+random crashes on amd64 too.
+
+--- src/runtime/src/native/corehost/apphost/static/CMakeLists.txt.orig
++++ src/runtime/src/native/corehost/apphost/static/CMakeLists.txt
+@@ -244,7 +244,7 @@ endif(CLR_CMAKE_TARGET_APPLE)
+
+ # On *BSD, we always use the libunwind that's part of the OS
+ if(CLR_CMAKE_TARGET_FREEBSD)
+-  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1)
++  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0)
+ endif()
+
+ if(CLR_CMAKE_USE_SYSTEM_LIBUNWIND AND NOT CLR_CMAKE_TARGET_APPLE)
+
+--- src/runtime/src/coreclr/pal/src/CMakeLists.txt.orig
++++ src/runtime/src/coreclr/pal/src/CMakeLists.txt
+@@ -1,7 +1,7 @@
+ if(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU)
+   # On OSX and *BSD, we use the libunwind that's part of the OS
+   # On Haiku, we used a special port of libunwind
+-  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 1)
++  set(CLR_CMAKE_USE_SYSTEM_LIBUNWIND 0)
+ endif(CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_FREEBSD OR CLR_CMAKE_TARGET_HAIKU)
+
+ if(NOT DEFINED ENV{ROOTFS_DIR})
+
+--- src/runtime/src/native/external/libunwind.cmake.orig
++++ src/runtime/src/native/external/libunwind.cmake
+@@ -96,7 +96,7 @@ elseif(CLR_CMAKE_TARGET_FREEBSD)
+     set(libunwind_la_SOURCES_arm_os             arm/Gos-freebsd.c)
+     set(libunwind_la_SOURCES_arm_os_local       arm/Los-freebsd.c)
+     set(libunwind_la_SOURCES_aarch64_os         aarch64/Gos-freebsd.c)
+-    set(libunwind_la_SOURCES_aarch64_os_local   aarch64/Los-freebsd.c)
++    set(libunwind_la_SOURCES_aarch64_os_local   aarch64/Los-freebsd.c aarch64/setcontext.S)
+     list(APPEND libunwind_coredump_la_SOURCES   coredump/_UCD_access_reg_freebsd.c)
+ elseif(CLR_CMAKE_HOST_SUNOS)
+     set(libunwind_la_SOURCES_os                 ${libunwind_la_SOURCES_os_solaris})



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202412151107.4BFB7Fbb057280>