irene a31cdef775 fix: resolve argv[0] misparse and SIGSEGV hang in JNI bridge
Two root causes prevented iperf3 tests from running:

1. argv[0] bug: iperf_parse_arguments() expects argv[0] to be the
   program name. We passed Dart args directly, so argv[0] was '-c',
   which iperf3 misinterpreted as the program name → 'Argument parse
   error: must either be a client (-c) or server (-s)'. Fixed by
   prepending "iperf3" as argv[0] and shifting user args to argv[1+].

2. Signal handling: iperf_catch_sigend() installs handlers that use
   longjmp() to a jmp_buf, but we never initialized the buffer with
   setjmp(). Any signal during iperf_run_client() caused SIGSEGV or
   hang. Added setjmp/longjmp wrapper matching main.c's pattern,
   SIGPIPE=SIG_IGN, and a 30s connect_timeout to avoid DNS hangs.

Also extracted iperf_cleanup_and_signal() to deduplicate the
normal-return and longjmp paths. Added diagnostic logging to
IperfRunner.kt's library loading for faster future debugging.
2026-08-26 01:52:37 +09:00

iperf3-gui

A Flutter-based Android GUI wrapper for iperf3, the popular network performance measurement tool.

Features

  • Client-mode network throughput testing
  • Simple UI: enter server address, port, and press GO
  • Raw iperf3 output display
  • Bundled iperf3 v3.21 binaries for arm64-v8a and armeabi-v7a

Architecture

lib/
├── domain/
│   ├── models/          # TestConfiguration, Iperf3Result
│   └── services/        # Iperf3Service (Process runner)
├── ui/
│   └── features/
│       └── test_run/    # TestRunScreen, TestRunViewModel
├── main.dart            # App entry point
└── pubspec.yaml         # Dependencies: provider, path_provider

Building

Prerequisites:

  • Flutter 3.47+
  • Android SDK with platform android-36
  • JDK 17
flutter create . --org novoyuuparosk --project-name iperf3gui
flutter pub get
flutter analyze
flutter build apk --debug

iperf3 Binaries

Pre-compiled binaries are sourced from davidBar-On/android-iperf3 and bundled in assets/iperf3/ (arm64-v8a and armeabi-v7a for Android 28+).

License

MIT — bundled iperf3 v3.21 is BSD-3-Clause licensed.

S
Description
No description provided
Readme MIT 2 MiB
2026-08-26 13:44:11 +00:00
Languages
C 70.4%
Makefile 11.5%
Dart 7.8%
C++ 2.6%
Roff 2.5%
Other 5.2%