[System.Information] Use Marshal.FreeHGlobal() instead of Libc.Free()
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Wed, 18 Oct 2023 05:31:40 +0000 (14:31 +0900)
committerChanwoo Choi <chanwoo@kernel.org>
Mon, 23 Oct 2023 08:05:38 +0000 (17:05 +0900)
Use Marshal.FreeHGlobal() instead of Libc.Free() for ASAN
environment. Also, remove not any more used Libc.Free() Interop.

In ASAN environment, because Interop uses dlopen(), newly opended
libc causes different libc/asan alloc context from already allocaed
buffer, and it gives segment fault crash when calling Libc.Free().

Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
src/Tizen.System.Information/Interop/Interop.Libc.cs [deleted file]
src/Tizen.System.Information/Interop/Interop.Libraries.cs
src/Tizen.System.Information/Usage/ProcessMemoryUsage.cs

diff --git a/src/Tizen.System.Information/Interop/Interop.Libc.cs b/src/Tizen.System.Information/Interop/Interop.Libc.cs
deleted file mode 100755 (executable)
index ef021f1..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-*
-* Licensed under the Apache License, Version 2.0 (the License);
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an AS IS BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-using System;
-using System.Runtime.InteropServices;
-
-internal static partial class Interop
-{
-    internal static partial class Libc
-    {
-        [DllImport(Libraries.Libc, EntryPoint = "free")]
-        public static extern void Free(IntPtr ptr);
-    }
-}
index 60ae7217fcd154b8b8c7b931c7089b72f2b9ee43..ddb18845f927d2d386e4e91ca39e0697be5b272b 100755 (executable)
@@ -20,6 +20,5 @@ internal static partial class Interop
     {
         internal const string RuntimeInfo = "libcapi-system-runtime-info.so.0";
         internal const string SystemInfo = "libcapi-system-info.so.0";
-        internal const string Libc = "libc.so.6";
     }
 }
index 9583f818452d6af3b0f329473e3ad7afb036a313..0c4a2a393fecb42594646ba553899a5ff8b533d0 100755 (executable)
@@ -280,7 +280,7 @@ namespace Tizen.System
             }
             finally
             {
-                Interop.Libc.Free(ptr);
+                Marshal.FreeHGlobal(ptr);
             }
         }
 
@@ -319,7 +319,7 @@ namespace Tizen.System
             }
             finally
             {
-               Interop.Libc.Free(ptr);
+                Marshal.FreeHGlobal(ptr);
             }
 
             Gpus = GetProcessMemoryValueInt(Interop.RuntimeInfo.ProcessMemoryInfoKey.Gpu, pid);