Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Open Settings Folder crashes without the process environment variable and uses the wrong portable path

Đang mở Phù hợp với người mới
#696 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 3 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
visualbasic
Lĩnh vực
desktop

Hướng nghiên cứu

Đọc SettingsPage.xaml.vb và theo dõi cách SettingsService chọn DataFolder trong SettingsService.vb, bao gồm cả chế độ portable trong Application.xaml.vb. Trước tiên, hãy so sánh đường dẫn của trình xử lý nút với thư mục dữ liệu đang hoạt động của dịch vụ, sau đó kiểm tra cách xử lý lỗi khi mở thư mục. Công việc được xem là hoàn tất khi nút mở thư mục cài đặt đang hoạt động trong cả hai trường hợp đã báo cáo và hiển thị lỗi đã được xử lý nếu không mở được.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Tested on official v4.0.0-beta.12, Windows 11 25H2 (26200.9711), ASUS Vivobook S 15 / Snapdragon X Elite X1E-78-100 / 16 GB RAM, .NET 10.0.13. Both the native ARM64 application and the official x64 application were tested directly on this ARM laptop. Additional component checks used unchanged libraries extracted from the x64 release, with the release's embedded manifest. No Intel/AMD PC was tested. Only disposable files were used. Most testing was automated with Codex, with human assistance identified where applicable. Related build request: #556.

The same button has two related problems.

A. Crash when the process has no IridiumIO environment variable

  1. Launch the application from a parent process that lacks IridiumIO.
  2. Open Settings and click Open Settings Folder.

The app exits with:

System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
  at System.IO.Path.Combine(String path1, String path2)
  at CompactGUI.SettingsPage.Button_Click(Object sender, RoutedEventArgs e)

This happened at 01:48:53 and 01:50:27 BST on 21 October 2026. The second reproduction deliberately omitted the variable only from the launched child's environment; no global variable was removed. Application logs and Windows .NET Runtime 1026/Application Error 1000 records corroborate both crashes.

A fresh child given the existing user-scoped value did not crash.

B. Wrong folder in portable mode
With IridiumIO present and the executable in a directory named CompactGUI, active settings are in the adjacent .CompactGUIData directory. The button instead constructs %LOCALAPPDATA%\IridiumIO\CompactGUI. That path did not exist in this setup; Explorer opened Documents instead of the active data folder.

Expected in both cases: open the actual settings directory, with a handled error if opening fails.

Source explanation

Opening ISettingsService.DataFolder.FullName with error handling should address both failures.

x64 component comparison (21 October 2026)

Invoking the actual x64 release's SettingsPage.Button_Click handler with IridiumIO missing only from the test process reproduced the same exception:

System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
  at System.IO.Path.Combine(String path1, String path2)
  at CompactGUI.SettingsPage.Button_Click(Object sender, RoutedEventArgs e)

The harness caught that exception. A subsequent direct GUI test independently confirmed the x64 app crash:

Direct x64 GUI follow-up (21 October 2026, BST)

A fresh official x64 application was launched with IridiumIO omitted only from that child's environment. Clicking Settings -> Open Settings Folder terminated the process at 18:22:52. Windows recorded:

.NET Runtime, event 1026: process terminated due to an unhandled exception
System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
  at System.IO.Path.Combine(String path1, String path2)
  at CompactGUI.SettingsPage.Button_Click(Object sender, RoutedEventArgs e)
Application Error, event 1000: CompactGUI.exe; exception 0xe0434352

The event's executable path matched the isolated official x64 copy, and the process was confirmed exited. This was an actual button click and unhandled application crash, separate from the caught component test.

With the existing environment value present, the portable x64 button opened a new Explorer window titled Documents at about 18:11:38. Its active data directory was the adjacent .CompactGUIData folder, not Documents. Explorer's full address could not be independently read because access to that window was unavailable; the window title, active data directory and handler's constructed path were recorded. The portable misdirection was also directly observed in the earlier ARM64 test.

The existing user-scoped environment variable was left unchanged.

Ngôn ngữ chính
Visual Basic .NET
Star
8.9k
Fork
343
Merge trung bình
3 ngày 18 giờ
Pull request đã merge (30 ngày)
7

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của IridiumIO/CompactGUI

Tất cả issue của IridiumIO/CompactGUI

Issue tương tự

Thêm issue về Desktop Dev

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.