Skip to content

Fix: True replication of event triggers across Platforms#326

Open
AnnaSasDev wants to merge 43 commits into
corefrom
293-bug-sendwebmessage-from-windowcreated-handler-raises-a-systemaccessviolationexception
Open

Fix: True replication of event triggers across Platforms#326
AnnaSasDev wants to merge 43 commits into
corefrom
293-bug-sendwebmessage-from-windowcreated-handler-raises-a-systemaccessviolationexception

Conversation

@AnnaSasDev
Copy link
Copy Markdown
Member

@AnnaSasDev AnnaSasDev commented May 21, 2026

Summary

Type of Change

  • Bug fix (non-breaking change fixing an issue)
  • New feature (non-breaking change adding functionality)
  • Breaking change (fix or feature impacting existing APIs)
  • Refactor / Code cleanup (no functional change)
  • Documentation update
  • Test addition or update
  • Other (please describe):

Affected Modules / Scope

  • InfiniFrame
  • InfiniFrame.Blazor
  • InfiniFrame.BlazorWebView
  • InfiniFrame.Js
  • InfiniFrame.Native
  • InfiniFrame.Shared
  • InfiniFrame.WebServer
  • InfiniFrame.Tools.Pack
  • InfiniFrameExample
  • InfiniFrameTests
  • Other:

Changes Introduced

Related Issues

Closes #293

Checklist

  • My code follows InfiniFrame's coding conventions
  • I added comments for complex or non-obvious code
  • Documentation updated (if applicable)
  • All tests pass locally
  • Added new tests for any new functionality
  • Existing tests pass
  • No new warnings or errors introduced
  • PR only includes changes relevant to the issue / feature

📖 Additional Context

- Introduced tests for `WindowCreated`, `WindowCreating`, `WindowMinimized`, `WindowMaximized`, `WindowRestored`, `WindowLocationChanged`, `WindowClosingRequested`, `WindowFocusIn`, `WindowFocusOut`, and `WindowSizeChanged` event handlers.
…ynchronous test assertions.

- Added `PollUtility.WaitForChangeAsync` to simplify polling logic in event tests.
- Replaced custom polling loops across `WindowEvents` tests with reusable `PollUtility` method.
- Enhanced native event handling by adding `WM_MOVE` and `WM_SIZE` message processing.
- Improved event consistency and baseline tracking in all `WindowEvents` test cases.
…ibute and improve GTK initialization logic with dedicated thread handling.
AnnaSasDev added 24 commits May 21, 2026 12:12
…ativeBridge` across scripts and configuration files.

- Updated build paths, exclusions, and project references.
- Removed obsolete `CMakeBuildDir` variable and streamlined build scripts.
- Adjusted `.dockerignore` rules to match renamed structure.
- Replaced inline delegates with explicit named argument syntax.
- Adjusted test comments for clarity and uniform style.
- Standardized `PollUtility` calls with `getValue` to improve readability.
…ed` handler

- Queue WebMessages sent before WebView2 initialization and flush them after `NavigationCompleted`.
- Add `NavigationCompleted` subscription for WebMessage flushing.
- Update tests to cover WebView2 crash scenario and ensure proper event handling.
…n Docker scripts

- Unified `USE_HOST_DISPLAY` logic across all `linux` and `linux-arm64` Docker scripts.
- Introduced `@extraArgs` for dynamic argument construction, improving maintainability and readability.
…eliability

- Skip test on Windows ARM64 due to unreliable `WM_ACTIVATE WA_INACTIVE` delivery on headless CI runners.
…cross platforms

- Introduced message queuing for WebMessages sent before WebView or WKWebView is ready.
- Flushed pending messages after WebView initialization using `WEBKIT_LOAD_FINISHED` (Linux) or `didFinishNavigation` (Mac).
- Added `_webviewReady` and `_pendingWebMessages` handling in platform-specific implementations.
- Updated Linux, Windows, and macOS GitHub Actions workflows to include .NET 8.0 and 9.0 test runs alongside .NET 10.0.
- Introduced logic to capture and propagate test exit codes for improved failure detection.
- Added `CloseWebView` implementation to explicitly clean up WebKitWebView before GtkWindow destruction.
- Registered a competing `atexit` handler to bypass WebKit's faulty cleanup, avoiding process aborts (exit code 134).
- Updated `on_widget_deleted` to invoke `CloseWebView` during window close handling.
- Re-enabled Linux tests for `WindowClosingRequestedEvent` and `WindowClosedEvent`.
- Deleted unused Dockerfiles, `.dockerignore` files, and shell/PowerShell scripts.
- Removed deprecated CI configurations, testing setups, and related artifacts from the repository.
…improvements

- Added installation of the latest npm version alongside Node.js 24.
- Switched .NET installation to use the official `dotnet-install.sh` script for SDKs 8, 9, and 10.
- Improved non-root user setup for devcontainers, ensuring appropriate permissions for `.nuget` directories.
- Updated solution file to include new devcontainer configuration files.
…ne Linux GUI environment

- Introduced `init-x11.sh` to set up X11, D-Bus, and Openbox for Linux GUI environments.
- Enabled optional GPU passthrough in `docker-compose.yml` for hardware acceleration.
- Enhanced GTK/WebKit support with updated dependencies and pre-compiled GSettings schemas.
- Switched default non-root user to `devuser` and streamlined `.nuget` volume mappings.
- Updated devcontainer configuration with new remote environment variables and VS Code extensions.
- Reflected changes in the solution file to track the new devcontainer scripts and config.
- Added PowerShell (`pwsh`) installation for Ubuntu 24.04 in the Dockerfile.
- Ensured all dependencies are properly cleaned after installation to reduce image size.
- Added write-protection check before creating `dbus_env.sh` in `init-x11.sh`.
- Adjusted `postStartCommand` to use an absolute path to `init-x11.sh` for consistency.
…al volumes

- Mapped JetBrains configuration, cache, and data volumes in `docker-compose.yml`.
- Added npm and Playwright browser cache volumes to improve development workflows.
- Included rsync in Dockerfile to sync JetBrains settings on container creation.
- Updated `postCreateCommand` to ensure proper setup and permissions for new volumes.
…ns settings sync

- Added `.vscode-server` volume mapping in `docker-compose.yml`.
- Replaced inline `postCreateCommand` with a standalone `postcreate.sh` script.
- Enhanced JetBrains settings synchronization to support multiple IDEs and streamline setup process.
…dow destruction

- Updated WebView cleanup to explicitly detach and destroy the widget, ensuring WebKit singletons settle synchronously.
- Removed the use of `webkit_web_view_terminate_web_process()` to avoid SIGABRT during GTK signal callbacks.
- Adjusted comments for clarity and added safeguards to prevent dangling references in WebKit's context.
…U passthrough

- Added JetBrains plugin pre-installation and refined sync for host settings.
- Introduced Playwright browser binaries installation in `postcreate.sh`.
- Improved GPU passthrough configuration with updated comments and deployment instructions.
- Adjusted `.devcontainer` scripts and settings for better compatibility and usability.
AnnaSasDev and others added 9 commits May 23, 2026 17:29
…ne environment variables

- Introduced `postcreate.sh` for setup tasks and updated its path in `devcontainer.json`.
- Enhanced X11 initialization to ensure proper permissions for `/tmp/.X11-unix`.
- Adjusted Dockerfile to bake lifecycle scripts into the image with correct permissions.
- Added new remote environment variables for improved compatibility and performance.
…nstallation

- Ensures dependencies are installed prior to running `npx playwright install`.
- Resolves potential issues with missing packages during setup.
- Ensures proper permissions during workload restoration in containerized environments.
… Linux test threading model

gtk_widget_destroy(webview) called from inside on_widget_deleted (a GTK signal callback) triggers
WebKit's internal web-process cleanup synchronously, which aborts the process (exit code 134) on
libwebkit2gtk-4.1. The webview is safely destroyed implicitly by GtkContainer when the parent window
is destroyed, so explicit destruction is unnecessary.

CloseWebView() now only disconnects signals and stops any in-flight load — the minimum safe teardown
that prevents callbacks from firing after the window starts tearing down.

Additionally, reverted the Linux test threading model from CreateOnDedicatedThread back to the proven
approach: Build() runs on the test-runner thread (which also calls gtk_init()), and WaitForClose()
runs gtk_main() on a separate background thread. The dedicated-thread approach caused GTK API calls
from test methods to land on a foreign thread, crashing the process.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… Linux test threading model

gtk_widget_destroy(webview) called from inside on_widget_deleted (a GTK signal callback) triggers
WebKit's internal web-process cleanup synchronously, which aborts the process (exit code 134) on
libwebkit2gtk-4.1. The webview is safely destroyed implicitly by GtkContainer when the parent window
is destroyed, so explicit destruction is unnecessary.

CloseWebView() now only disconnects signals and stops any in-flight load — the minimum safe teardown
that prevents callbacks from firing after the window starts tearing down.

Additionally, reverted the Linux test threading model from CreateOnDedicatedThread back to the proven
approach: Build() runs on the test-runner thread (which also calls gtk_init()), and WaitForClose()
runs gtk_main() on a separate background thread. The dedicated-thread approach caused GTK API calls
from test methods to land on a foreign thread, crashing the process.
…s-a-systemaccessviolationexception' of https://github.com/InfiniLore/InfiniFrame into 293-bug-sendwebmessage-from-windowcreated-handler-raises-a-systemaccessviolationexception
…rash

abort() raises SIGABRT directly and does NOT go through atexit handlers, so
the previous atexit-based bypass was ineffective. Install a SIGABRT signal
handler (once, after the first WebKitWebView is created) that calls _exit(0),
which terminates the process cleanly before WebKit's crashing cleanup can act.
_exit(0) in the SIGABRT handler terminates the process before .NET's managed
shutdown runs, so TUnit never sends the TestSessionEnd protocol message to the
dotnet-test orchestrator. This causes a spurious non-zero exit code even when
all tests pass.

Fix: on first SIGABRT invocation call exit(0) so .NET can finish its cleanup
(sending the session-end message). When WebKit calls abort() a second time
during that cleanup, the re-entrance guard fires _exit(0) to break the loop.
@AnnaSasDev
Copy link
Copy Markdown
Member Author

Finally some progress... but slow...
The issue really stemmed from Photino not handling certain window lifetime events at all during linux/macos, which explained the original failing tests, but now that they are hooked up, exitcode 134 seems to be a looming culprit that crashes the entire test suite, without further explanations really.

Comment thread src/InfiniFrame/Window/InfiniFrameWindow.cs Fixed
@AnnaSasDev
Copy link
Copy Markdown
Member Author

So... the reason for the crashes seem to make more and more sense... but my knowledge of c++ and the linux GTK is holding me back a lot... This needs a lot of heavy lifting still

- Remove `InstallWebKitShutdownBypass` and migrate SIGABRT handler registration directly to `atexit` callback.
- Refactored Linux WebKit shutdown bypass logic to avoid ProcessExit registration and managed interop.
- Removed unused methods, imports, and project references related to the bypass.
- Ensured proper registration order and handler installation during shutdown for cleaner teardown.

Refactor WebView teardown to avoid GTK main-loop deadlock during window destruction

Refactor WebView and Window destruction logic in GTK lifecycle

- Centralized WebView cleanup into `OnWidgetDestroyed()` to ensure consistent destruction order and prevent dangling references during teardown.
- Removed redundant WebKit context resets and `_webviewClosed` flag for streamlined lifecycle management.
- Enhanced signal disconnection logic and comments for better clarity and maintainability.

Refactor WaitForExit and OnWidgetDestroyed to ensure proper GTK event loop handling during window teardown

- Moved `InvokeClosed()` before unblocking `WaitForExit()` to preserve correct event sequencing and ensure callbacks finish execution safely.
- Introduced a nested `GMainLoop` in `WaitForExit()` for the GTK thread to prevent blocking the event loop and allow graceful handling of close events.
- Added `_exitLoop` member for managing the nested loop lifecycle in `WaitForExit()` and `OnWidgetDestroyed`.

Remove diagnostic logging and unused headers from WebKitHost.Gtk

- Eliminated temporary SIGABRT diagnostics, file logging, and backtrace capture for cleanup.
- Removed unused imports (`execinfo.h`, `fcntl.h`).
- Streamlined SIGABRT handler and WebKit teardown logic for better clarity and maintainability.

Refactor GTK thread management, WebKit context lifecycle, and window destruction

- Centralized GTK initialization and worker thread setup for robust and thread-safe operations.
- Replaced per-window WebKit contexts with a shared, process-global static context to prevent race conditions and SIGABRT during cleanup.
- Updated `WaitForExit` and teardown logic to use condition variables for synchronized cross-thread signal handling.
- Improved thread safety for signal handlers by replacing global mutexes with per-call synchronization.
- Ensured proper GTK-thread-safe handling of window destruction, WebView closure, and teardown signals.

Improve GDB signal handling in entrypoint

Enhance SIGABRT handler for safe WebKit teardown during exit

- Replaced opt-in SIGABRT bypass with always-on handler that differentiates between WebKit's cleanup abort and real failures using an atomic flag armed via `atexit`.
- Updated handler to re-raise SIGABRT for real crashes, preserving core dumps and diagnostics.
- Simplified GDB diagnostic script by modifying SIGABRT handling to pass through without additional stops or catches.

Refactor WebKit context management for safer lifecycle handling

- Switched to using the process-global default WebKit context (`webkit_web_context_get_default()`) to avoid race conditions and crashes during per-window context cleanup.
- Updated comments and cleanup logic to reflect non-ownership of global context references, ensuring safe WebKit lifecycle management.
- Removed redundant `g_object_unref` calls for `_webContext` in GTK window lifecycle methods.

Update TUnit dependencies to version 1.47.0

Fix typo in `InfiniFrameWindow` remarks and update user dictionary entries

- Corrected grammar in `Chromeless` property remarks by adding missing commas.
- Added new terms (`gwlp`, `ncdestroy`) to the user dictionary for improved spelling recognition.

Refactor WaitForExit and shutdown logic for safer teardown

- Updated `WaitForExit` to avoid restricting `GetMessage` to a specific window handle and removed external destruction checks (`IsWindow`).
- Adjusted shutdown flow in `MarkClosedFromNativeCallback` to prevent native object deletion during `WM_DESTROY` to avoid dangling pointers.

Improve WaitForExit message loop robustness

Make WaitForExit more robust by capturing the window handle early, validating the impl and hwnd, and applying the pending owner using impl.get(). Restrict GetMessage to the window's hwnd, add an IsWindow check to break if the window is destroyed externally, and unify tracing to use the captured hwnd. Also apply a minor formatting change to combine the InfiniFrame_ShowNotification export signature into a single line.

Ensure GTK-thread-safe teardown and test diagnostics

Make GTK usage and teardown thread-safe by capturing the GTK owner thread ID and adding IsGtkThread helpers; introduce a synchronous invoke helper (g_main_context_invoke + condition_variable) to run actions on the GTK thread and wait. Replace g_main_context_is_owner checks with IsGtkThread and use invoke_on_gtk_thread_and_wait for window destruction, CloseWebView, and web context unref to avoid unsafe cross-thread GTK/WebKit calls. Centralize widget destruction handling via OnWidgetDestroyed and streamline signal callbacks. Also remove forced web process termination during CloseWebView to avoid teardown crashes.

Add test diagnostics support: new env vars (INFINIFRAME_ENABLE_TESTAPP_DIAGNOSTIC, INFINIFRAME_TEST_TREENODE_FILTER) and wiring in docker entrypoint and run-linux-tests-wslg.sh to pass diagnostic/treenode options and configure diagnostic output directory and file prefixes for native crash artifacts.

Add Linux-specific skip logic for focus event tests in WSLg and local environments

- Updated `WindowFocusOutEventTests` and `WindowFocusInEventTests` to skip under Linux due to desktop-state dependency issues.

Refactor GTK window and WebView lifecycle for thread safety and WebKit context management

- Added `_webContext` management for better WebKit lifecycle handling across operations.
- Introduced `_mainLoopRunning` to track GTK main loop state and ensure proper threading behavior.
- Updated WebView cleanup logic to handle WebKit context and destruction order more safely.
- Extended Docker scripts with `INFINIFRAME_ENABLE_STRACE` support for enhanced diagnostics.
- Refined `entrypoint.sh` to include `strace` installation and streamlined WSLg testing configurations.

Add SIGABRT backtrace handler and improve Linux diagnostics and lifecycle management

- Introduced SIGABRT backtrace capture with optional environment variable control via `INFINIFRAME_LINUX_NATIVE_SIGABRT_TRACE`.
- Enhanced GTK window and WebView lifecycle cleanup to address threading and destruction order issues, ensuring safe teardown.
- Added new configurations for GDB in diagnostics, including timeout handling and crash blame options.
- Refined logic in Linux Docker scripts for test filtering, crash analysis, and WSLg support.
- Updated environment variables and mutex usage for improved thread safety and transparency in native operations.

Add JetBrains plugin definitions and enhancements to .devcontainer configuration

- Expanded JetBrains plugin list in `.devcontainer.json` for improved tooling support.
- Refined IDE settings for better developer experience in containerized environments.

Add GDB live capture for test diagnostics and enhance framework handling

- Introduced `INFINIFRAME_NATIVE_GDB_FALLBACK` for optional GDB live diagnostics during tests.
- Added support for dynamic test frameworks via `INFINIFRAME_TEST_FRAMEWORKS` environment variable.
- Implemented GDB integration in `entrypoint.sh` for detailed crash diagnostics per framework.
- Refactored testing loop to streamline framework execution and diagnostics collection.

Enable host core dumps and warn if unavailable

- Updated `entrypoint.sh` with logic to detect and warn if no core files are found, improving diagnostics clarity.
- Modified `docker-compose.yml` to set `privileged: true` and configure unlimited core dump size via `ulimits`.

Remove JetBrains-specific setup and enhance .devcontainer configuration

- Deleted JetBrains settings sync and plugin preinstallation logic from `postcreate.sh`.
- Added `.local` directory to volume mounts for improved persistence.
- Updated `.devcontainer.json` to include `vscode-server` volume and enhanced Java proxy options.
- Introduced JetBrains plugin and settings definitions directly within `.devcontainer.json`.

Add WSLg test runner and native diagnostics

Introduce WSLg-specific test/run scripts and docker service, enable native crash diagnostics, and safely tear down native window instances.

- Add docker/linux run-linux-tests-wslg.{ps1,sh} and replace old run-linux-tests.ps1; add linux-tests-wslg service to docker-compose.yml and include new scripts in InfiniFrame.slnx.
- Update run-example-blazorwebview wslg scripts to support a --build flag and reuse cached images when possible.
- Enhance docker/linux/entrypoint.sh to optionally install gdb/libc6-dbg, configure core dumping, and collect GDB backtraces into artifacts/native-crash when INFINIFRAME_ENABLE_NATIVE_DIAGNOSTICS=1.
- Add additional ignore patterns to .dockerignore.
- In InfiniFrameWindow.cs add tracking of the native-owned handle and a TryDestroyNativeInstanceNoThrow helper to invoke the native destructor safely during shutdown/close to avoid leaks or crashes.

Remove unused example-blazorwebview service from Docker Compose file

Improve Linux GTK WebView teardown process

- Enhanced WebView cleanup by synchronizing signal disconnection, stopping loads, terminating subprocesses, and managing destruction order.
- Prevented potential aborts during process shutdown by addressing WebKit state references and ensuring proper event processing.

Add WSLg support for Linux BlazorWebView examples and streamline Docker scripts

- Introduced `run-example-blazorwebview-wslg.sh` and `.ps1` scripts for running BlazorWebView examples using WSLg.
- Updated `entrypoint.sh` with WSLg environment setup for seamless Wayland and PulseAudio support.
- Enhanced Docker Compose configuration to add `example-blazorwebview-wslg` service with WSLg-specific settings.
- Removed `run-example-blazorwebview.ps1`, refactoring its functionality into WSLg-specific scripts.
- Improved X11 handling and environment configuration across scripts for example execution in both WSLg and native Linux.

Enhance thread safety for Linux GTK window lifecycle and WebKit operations

- Added `std::recursive_mutex` to guard GTK window lifecycle methods.
- Introduced static `std::mutex` for thread-safe handling of `Show` method in WebKitHost.

Improve Linux Docker scripts with robust X11 handling and headless mode checks

- Enhanced `entrypoint.sh` with retry logic for X11 server connectivity and user guidance for troubleshooting.
- Replaced `docker-compose` commands in PowerShell scripts with direct `docker build` and `docker run` invocations for better customization and clarity.
- Added comprehensive environment variable configuration for test and example execution.
- Updated solution file to reflect new Linux Docker scripts and folder structure.

Add Linux Docker setup for tests and Blazor WebView examples

- Introduced `Dockerfile` with dependencies to run .NET tests and Blazor WebView examples in a containerized Linux environment.
- Added `entrypoint.sh` for runtime setup, X11 configuration, and test/example execution.
- Included `docker-compose.yml` for managing Linux test and Blazor WebView example services.
- Created PowerShell scripts for building and running tests (`run-linux-tests.ps1`) and examples (`run-example-blazorwebview.ps1`).
- Updated `.dockerignore` to ignore unnecessary files in the build context.

Refactor Linux GTK runtime initialization and WebView teardown

- Centralized Linux runtime setup with `acquire_linux_runtime` and `release_linux_runtime`.
- Simplified WebView destruction by removing `CloseWebViewInternal` and related signal handlers.
- Improved runtime thread safety with mutex and `std::once_flag`.

Update Linux CI crash diagnostics to improve core dump analysis

- Add `libc6-dbg` to debugging tools for enhanced crash diagnostics.
- Extract executable path from core file metadata and use it for GDB analysis.
- Include additional metadata and executable details in crash logs.

Refactor Linux CI crash diagnostics handling

- Replaced GDB-based test execution with post-test core file analysis.
- Updated core pattern configuration to store crash dumps in a dedicated artifacts directory.
- Removed `run_test_under_gdb` and streamlined the `run_test` function for test execution.
- Added logic to process and upload core dumps using GDB after test execution.

Run .NET tests under GDB in Linux CI to gather crash diagnostics

- Added `Install Native Debugging Tools` step to install GDB.
- Introduced `run_test_under_gdb` function to execute tests with GDB for .NET 8.0, 9.0, and 10.0.
- Enabled `Upload Native Crash Diagnostics` step to upload GDB logs and core dumps for analysis.

Add OnWindowDestroyed handler for GTK window cleanup

- Safeguard against null or invalid `_window` during destruction.
- Ensure proper cleanup of window and webview state when the GTK widget is destroyed.

Refactor Linux WebKit WebView teardown process

- Introduced `CloseWebViewInternal` to centralize WebView destruction logic, with controlled finalization flow.
- Added `OnWebViewDestroyed` signal handler to manage WebView state during destruction.
- Updated GTK signal connections to prevent callbacks after WebView teardown.

Work around SIGABRT in Linux WebKit CI by setting `INFINIFRAME_LINUX_WEBKIT_SIGABRT_BYPASS`.

Make SIGABRT bypass opt-in for Linux WebKit shutdown

- Introduced an environment variable (`INFINIFRAME_LINUX_WEBKIT_SIGABRT_BYPASS`) to enable SIGABRT-to-exit behavior explicitly.
- Replaced atomic guard with `_exit(0)` for signal safety and simplified handler logic.
- Removed unused imports and redundant comments for cleaner implementation.

Update package dependencies in `Directory.Packages.props`

- Upgraded Microsoft.Playwright to 1.60.0.
- Upgraded MudBlazor to 9.5.0.
- Upgraded TUnit packages to 1.45.29.

Enhance SIGABRT handler for WebKit shutdown on Linux

- Added atomic re-entrance guard to improve safety during recursive SIGABRT events.
- Allowed initial `exit(0)` for .NET managed cleanup, with `_exit(0)` for subsequent invocations.
- Updated comments to clarify the behavior and rationale behind the changes.

Refactor SIGABRT handler setup for WebKit shutdown on Linux

- Replaced atexit-based registration with direct SIGABRT signal handler installation on first WebView creation.
- Ensured the handler is active throughout WebKit usage, preventing abort-induced crashes during teardown.
- Simplified and clarified bypass implementation, maintaining consistent signal behavior for real crashes.

Add WebKit shutdown bypass handler for Linux to suppress SIGABRT-induced crashes during process exit

- Introduced `InstallWebKitShutdownBypass` invoked via managed code's `AppDomain.ProcessExit` to install a SIGABRT handler.
- Removes reliance on re-entrant checks and ensures clean shutdown via `_exit(0)` during `libwebkit2gtk-4.1` singleton destruction.
- Adjusted test utility and Linux-specific code paths to utilize the new bypass effectively.
@AnnaSasDev AnnaSasDev force-pushed the 293-bug-sendwebmessage-from-windowcreated-handler-raises-a-systemaccessviolationexception branch from df78c6b to f311e86 Compare May 31, 2026 10:56
This reverts commit f311e86.
…reamlined Linux container setup

- Deleted `.devcontainer/init-x11.sh`.
- Removed X11-related environment variables and `postStartCommand` from `.devcontainer.json`.
- Eliminated `xvfb` and `openbox` from Dockerfile.
- Adjusted `docker-compose.yml` to rely on native X11/Wayland support via WSLg.
- Updated project with new WSLg test runner configuration.
…reamlined Linux container setup

- Deleted `.devcontainer/init-x11.sh`.
- Removed X11-related environment variables and `postStartCommand` from `.devcontainer.json`.
- Eliminated `xvfb` and `openbox` from Dockerfile.
- Adjusted `docker-compose.yml` to rely on native X11/Wayland support via WSLg.
- Updated project with new WSLg test runner configuration.
…s-a-systemaccessviolationexception' of https://github.com/InfiniLore/InfiniFrame into 293-bug-sendwebmessage-from-windowcreated-handler-raises-a-systemaccessviolationexception
@AnnaSasDev
Copy link
Copy Markdown
Member Author

Squashed all the worked I had done up until now because no matter what I did nothing got resolved
Moved back to a state where we can start exploring the actual issue once again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug | SendWebMessage from WindowCreated handler raises a System.AccessViolationException

2 participants