Skip to content

Commit f7ac14b

Browse files
committed
fix: unable to capture thread context
1 parent 14d0de3 commit f7ac14b

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

sources/ModCore.Native/NativeMethods.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ TlsSetValue
2020

2121
RtlLookupFunctionEntry
2222
RtlVirtualUnwind
23-
RtlCaptureContext
23+
RtlCaptureContext

sources/ModCore.Native/NativeWin.cs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ public override void InitializeNative()
5555
File.Delete(dmpPath);
5656
}
5757

58-
Console.Error.WriteLine("[DCCMDBG-CRASH]" + dmpPath);
58+
//Console.Error.WriteLine("[DCCMDBG-CRASH]" + dmpPath);
5959

60-
var rtRoot = Path.GetDirectoryName(typeof(object).Assembly.Location)!;
61-
var createDumpPath = Path.Combine(rtRoot, "createdump.exe");
62-
var createDumpCmd = $"\"{createDumpPath}\" -f \"{dmpPath}\" -n";
60+
//var rtRoot = Path.GetDirectoryName(typeof(object).Assembly.Location)!;
61+
//var createDumpPath = Path.Combine(rtRoot, "createdump.exe");
62+
//var createDumpCmd = $"\"{createDumpPath}\" -f \"{dmpPath}\" -n";
6363

64-
InitVEH(Marshal.StringToHGlobalUni(createDumpCmd));
64+
//InitVEH(Marshal.StringToHGlobalUni(createDumpCmd));
6565
}
6666
}
6767

@@ -298,15 +298,17 @@ public override void FixThreadCurrentStackFrame( HL_thread_info* t )
298298

299299
SuspendThread(th);
300300

301-
CONTEXT context = new()
302-
{
303-
ContextFlags = CONTEXT_FLAGS.CONTEXT_AMD64 | CONTEXT_FLAGS.CONTEXT_CONTROL_AMD64
304-
};
305-
306-
var err = GetThreadContext(th, ref context);
301+
CONTEXT* context = stackalloc CONTEXT[1];
302+
303+
context->ContextFlags = CONTEXT_FLAGS.CONTEXT_CONTROL_AMD64;
304+
305+
var err = GetThreadContext(th, ref context[0]);
307306

308307
Debug.Assert(err != 0);
309-
var rsp = context.Rsp;
308+
309+
var rsp = context->Rsp;
310+
311+
//var rsp = context.Rsp;
310312
Debug.Assert(rsp != 0);
311313

312314
t->stack_cur = (void*) rsp;

0 commit comments

Comments
 (0)