January 15, 2022
https://issues.dlang.org/show_bug.cgi?id=22677

          Issue ID: 22677
           Summary: thompson.d(846): Unrecognized instruction cast(IR)112
           Product: D
           Version: D2
          Hardware: x86
                OS: Other
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: phobos
          Assignee: nobody@puremagic.com
          Reporter: bcallah@openbsd.org

Created attachment 1838
  --> https://issues.dlang.org/attachment.cgi?id=1838&action=edit
Crash log

Hello --

Using both LDC 1.28.1 and DMD 2.098.1 on OpenBSD, I was able to build the OneDrive client written in D (https://github.com/abraunegg/onedrive). However, I have a problem when using the program. When monitor mode notices and update on OneDrive, it attempts to sync with the OneDrive server. This causes a 100% reproducible error, below.

Posting it here rather than there because I can't tell if this is an application issue or an underlying Phobos issue. Also attached in case the copy and paste goes awry.

As always, let me know if there's anything else needed to help track this down.

~Brian

Configuring Global Azure AD Endpoints
Initializing the Synchronization Engine ...
Initializing monitor ...
OneDrive monitor interval (seconds): 15
core.exception.AssertError@/usr/local/include/dmd/phobos/std/regex/internal/thompson.d(846):
Unrecognized instruction cast(IR)112
----------------
??:? _d_assert_msg [0x9273fac90f8]
??:? pure @trusted void std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher.initExternalMemory(void[])
[0x9273f969cd8]
??:? pure @trusted std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher
std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher.__ctor!().__ctor(ref
const(std.regex.internal.ir.Regex!(char).Regex),
std.regex.internal.ir.Input!(char).Input, void[]) [0x9273f9c1a94]
??:? pure @safe std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher
core.lifetime.emplace!(std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher,
const(std.regex.internal.ir.Regex!(char).Regex),
std.regex.internal.ir.Input!(char).Input,
void[]).emplace(std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher, ref
const(std.regex.internal.ir.Regex!(char).Regex),
std.regex.internal.ir.Input!(char).Input, void[]) [0x9273f9c191c]
??:? pure std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher
core.lifetime.emplace!(std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher,
const(std.regex.internal.ir.Regex!(char).Regex),
std.regex.internal.ir.Input!(char).Input, void[]).emplace(void[], ref
const(std.regex.internal.ir.Regex!(char).Regex),
std.regex.internal.ir.Input!(char).Input, void[]) [0x9273f9c17e8]
??:? const std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher
std.regex.internal.ir.RuntimeFactory!(std.regex.internal.thompson.ThompsonMatcher,
char).RuntimeFactory.construct(ref
const(std.regex.internal.ir.Regex!(char).Regex), in char[], void[])
[0x9273f967ddd]
??:? const @trusted std.regex.internal.thompson.ThompsonMatcher!(char,
std.regex.internal.ir.Input!(char).Input).ThompsonMatcher
std.regex.internal.ir.GenericFactory!(std.regex.internal.thompson.ThompsonMatcher,
char).GenericFactory.create(ref
const(std.regex.internal.ir.Regex!(char).Regex), in char[]) [0x9273f967e5c]
??:? ref @trusted std.regex.RegexMatch!(const(char)[]).RegexMatch
std.regex.RegexMatch!(const(char)[]).RegexMatch.__ctor!(std.regex.internal.ir.Regex!(char).Regex).__ctor(const(char)[],
std.regex.internal.ir.Regex!(char).Regex) [0x9273fb775ff]
??:? @safe std.regex.RegexMatch!(const(char)[]).RegexMatch
std.regex.match!(const(char)[],
std.regex.internal.ir.Regex!(char).Regex).match(const(char)[],
std.regex.internal.ir.Regex!(char).Regex) [0x9273fb76cb5]
??:? @safe bool std.net.curl.HTTP.parseStatusLine(const(char[]), out
std.net.curl.HTTP.StatusLine) [0x9273fb4af5e]
??:? void std.net.curl.HTTP.Impl.onReceiveHeader(void delegate(in char[], in
char[])).__lambda2(in char[]) [0x9273fb4a6f4]
??:? void function(in char[]) std.net.curl.Curl.onReceiveHeader(void
delegate(in char[])).__lambda2 [0x9273fb561af]
??:? extern (C) ulong std.net.curl.Curl._receiveHeaderCallback(const(char*),
ulong, ulong, void*) [0x9273fb56651]
??:? curl_getdate [0x929b27c73fa]
??:? curl_getenv [0x929b27aab8f]
??:? curl_url_strerror [0x929b27db7df]
??:? curl_multi_perform [0x929b27be683]
??:? curl_multi_perform [0x929b27bd79d]
??:? curl_easy_perform [0x929b2796969]
??:? int std.net.curl.Curl.perform(std.typecons.Flag!("throwOnError").Flag)
[0x9273fb55f79]
??:? int std.net.curl.HTTP.perform(std.typecons.Flag!("throwOnError").Flag)
[0x9273fb4b797]
??:? std.json.JSONValue onedrive.OneDriveApi.perform() [0x9273fa70b9c]
??:? std.json.JSONValue onedrive.OneDriveApi.get(const(char)[], bool)
[0x9273fa6fe9f]
??:? std.json.JSONValue onedrive.OneDriveApi.getPathDetailsById(const(char)[],
const(char)[]) [0x9273fa6e2f3]
??:? void sync.SyncEngine.applyDifferences(immutable(char)[], const(char)[],
bool) [0x9273fa7f182]
??:? void sync.SyncEngine.applyDifferences(bool) [0x9273fa7bbe2]
??:? void main.performSync(sync.SyncEngine, immutable(char)[], bool, bool,
bool, long, bool, bool, bool, bool, monitor.Monitor) [0x9273fa6524a]
??:? _Dmain [0x9273fa640f8]
std.net.curl.CurlException@std/net/curl.d(4402): A libcurl function was given a
bad argument on handle null
----------------
??:? pure @safe noreturn
std.exception.bailOut!(std.net.curl.CurlException).bailOut(immutable(char)[],
ulong, scope const(char)[]) [0x9273fb5713a]
??:? pure @safe bool
std.exception.enforce!(std.net.curl.CurlException).enforce!(bool).enforce(bool,
lazy const(char)[], immutable(char)[], ulong) [0x9273fb570a7]
??:? void std.net.curl.Curl._check(int) [0x9273fb55b25]
??:? void std.net.curl.Curl.clear(etc.c.curl.CurlOption) [0x9273fb55ede]
??:? void std.net.curl.HTTP.clearRequestHeaders() [0x9273fb4b93f]
??:? void onedrive.OneDriveApi.shutdown() [0x9273fa6c399]
??:? _Dmain [0x9273fa6477b]

--