Merge pull request #5705 from dhiltgen/win_errormode
Enable windows error dialog for subprocess
This commit is contained in:
commit
e8a66680d1
6 changed files with 32 additions and 2 deletions
4
llm/ext_server/server.cpp
vendored
4
llm/ext_server/server.cpp
vendored
|
@ -41,6 +41,7 @@
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <errhandlingapi.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
@ -2737,6 +2738,9 @@ int wmain(int argc, wchar_t **wargv) {
|
||||||
for (int i = 0; i < argc; ++i) {
|
for (int i = 0; i < argc; ++i) {
|
||||||
argv[i] = wchar_to_char(wargv[i]);
|
argv[i] = wchar_to_char(wargv[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adjust error mode to avoid error dialog after we start.
|
||||||
|
SetErrorMode(SEM_FAILCRITICALERRORS);
|
||||||
#else
|
#else
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,7 +2,10 @@ package llm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"embed"
|
"embed"
|
||||||
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed build/darwin/x86_64/*/bin/*
|
//go:embed build/darwin/x86_64/*/bin/*
|
||||||
var libEmbed embed.FS
|
var libEmbed embed.FS
|
||||||
|
|
||||||
|
var LlamaServerSysProcAttr = &syscall.SysProcAttr{}
|
||||||
|
|
|
@ -2,7 +2,10 @@ package llm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"embed"
|
"embed"
|
||||||
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed build/darwin/arm64/*/bin/*
|
//go:embed build/darwin/arm64/*/bin/*
|
||||||
var libEmbed embed.FS
|
var libEmbed embed.FS
|
||||||
|
|
||||||
|
var LlamaServerSysProcAttr = &syscall.SysProcAttr{}
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
package llm
|
package llm
|
||||||
|
|
||||||
import "embed"
|
import (
|
||||||
|
"embed"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
//go:embed build/linux/*/*/bin/*
|
//go:embed build/linux/*/*/bin/*
|
||||||
var libEmbed embed.FS
|
var libEmbed embed.FS
|
||||||
|
|
||||||
|
var LlamaServerSysProcAttr = &syscall.SysProcAttr{}
|
||||||
|
|
|
@ -1,6 +1,20 @@
|
||||||
package llm
|
package llm
|
||||||
|
|
||||||
import "embed"
|
import (
|
||||||
|
"embed"
|
||||||
|
"syscall"
|
||||||
|
)
|
||||||
|
|
||||||
// unused on windows
|
// unused on windows
|
||||||
var libEmbed embed.FS
|
var libEmbed embed.FS
|
||||||
|
|
||||||
|
const CREATE_DEFAULT_ERROR_MODE = 0x04000000
|
||||||
|
|
||||||
|
var LlamaServerSysProcAttr = &syscall.SysProcAttr{
|
||||||
|
// Wire up the default error handling logic If for some reason a DLL is
|
||||||
|
// missing in the path this will pop up a GUI Dialog explaining the fault so
|
||||||
|
// the user can either fix their PATH, or report a bug. Without this
|
||||||
|
// setting, the process exits immediately with a generic exit status but no
|
||||||
|
// way to (easily) figure out what the actual missing DLL was.
|
||||||
|
CreationFlags: CREATE_DEFAULT_ERROR_MODE,
|
||||||
|
}
|
||||||
|
|
|
@ -346,6 +346,7 @@ func NewLlamaServer(gpus gpu.GpuInfoList, model string, ggml *GGML, adapters, pr
|
||||||
s.cmd.Env = os.Environ()
|
s.cmd.Env = os.Environ()
|
||||||
s.cmd.Stdout = os.Stdout
|
s.cmd.Stdout = os.Stdout
|
||||||
s.cmd.Stderr = s.status
|
s.cmd.Stderr = s.status
|
||||||
|
s.cmd.SysProcAttr = LlamaServerSysProcAttr
|
||||||
|
|
||||||
envWorkarounds := [][2]string{}
|
envWorkarounds := [][2]string{}
|
||||||
for _, gpu := range gpus {
|
for _, gpu := range gpus {
|
||||||
|
|
Loading…
Reference in a new issue