flutter / flutter/flutter

Compilation to wasm fails when --dart-define is used with strings containing a comma

Open
#164,873 9 comments 1 reaction 0 assignees View on GitHub
a: build c: crash dependency: dart dependency:dart-triaged e: wasm found in release: 3.29 found in release: 3.30 has reproducible steps P2 platform-web team-web tool triaged-web
Dominant language
Dart
Stars
179k
Forks
31.1k
PR merge metrics
PR metrics pending

Description

### Steps to reproduce

1. Create a project with `flutter create --platforms=web flutter_stub`
2. Compile it with `flutter build web --wasm --dart-define FOO="a, b"`

### Expected results

The project compiles successfully.

### Actual results

The compilation fails (see logs section for output).

### Code sample

Code sample
Not applicable, as the problem occurs on a freshly created project.

### Screenshots or Video

_No response_

### Logs

Compilation error message

```console
Target dart2wasm failed: ProcessException: Process exited abnormally with exit code 64:
#0 processEnvironment. (package:dart2wasm/dart2wasm.dart:134)
#1 MappedIterable.elementAt (dart:_internal/iterable.dart:402)
#2 ListIterator.moveNext (dart:_internal/iterable.dart:371)
#3 MapBase.addEntries (dart:collection/maps.dart:89)
#4 new Map.fromEntries (dart:core/map.dart:216)
#5 processEnvironment (package:dart2wasm/dart2wasm.dart:131)
#6 options. (package:dart2wasm/dart2wasm.dart:70)
#7 Option.applyToOptions (package:dart2wasm/option.dart:19)
#8 parseArguments (package:dart2wasm/dart2wasm.dart:169)
#9 main (package:dart2wasm/dart2wasm.dart:186)
#10 main (file:///b/s/w/ir/x/w/sdk/pkg/dart2wasm/bin/dart2wasm.dart:10)
#11 _delayEntrypointInvocation. (dart:isolate-patch/isolate_patch.dart:313)
#12 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:194)

Argument Error: Invalid argument(s): Bad define string: b
Usage: dart2wasm []

Options:
-h, --help
--[no-]import-shared-memory
--[no-]inlining (defaults to on)
--[no-]minify
--[no-]polymorphic-specialization
--[no-]print-kernel
--[no-]print-wasm
--[no-]js-compatibility
--[no-]enable-asserts
--[no-]omit-explicit-checks
--[no-]omit-implicit-checks
--[no-]omit-bounds-checks
--[no-]verbose
--[no-]verify-type-checks
--[no-]enable-experimental-wasm-interop
--inlining-limit (defaults to "0")
--shared-memory-max-pages
--packages
--libraries-spec
--platform
--watch
-D, --define
--enable-experiment
--multi-root-scheme
--multi-root
--delete-tostring-package-uri
--depfile
--js-runtime-output
--dump-kernel-after-cfe
--dump-kernel-before-tfa
--dump-kernel-after-tfa
--[no-]enable-experimental-ffi
--[no-]no-source-maps
--[no-]enable-deferred-loading
--[no-]enable-multi-module-stress-test-mode
--dynamic-module-main
--dynamic-module-interface
--dynamic-module-metadata
Command: /home/christian/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/dart compile wasm --packages=/home/christian/workbench/flutter_stub/.dart_tool/package_config.json
--extra-compiler-option=--platform=/home/christian/snap/flutter/common/flutter/bin/cache/flutter_web_sdk/kernel/dart2wasm_platform.dill -Ddart.vm.profile=false -Ddart.vm.product=true
--extra-compiler-option=--delete-tostring-package-uri=dart:ui --extra-compiler-option=--delete-tostring-package-uri=package:flutter --extra-compiler-option=--import-shared-memory
--extra-compiler-option=--shared-memory-max-pages=32768 -DFOO=a, b -DFLUTTER_WEB_USE_SKIA=false -DFLUTTER_WEB_USE_SKWASM=true
-DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/f73bfc4522dd0bc87bbcdb4bb3088082755c5e87/
--extra-compiler-option=--depfile=/home/christian/workbench/flutter_stub/.dart_tool/flutter_build/4fe51ac78efe0ee6dfee041c5ea3b350/dart2wasm.d -O4 --strip-wasm --no-source-maps -o
/home/christian/workbench/flutter_stub/.dart_tool/flutter_build/4fe51ac78efe0ee6dfee041c5ea3b350/main.dart.wasm
/home/christian/workbench/flutter_stub/.dart_tool/flutter_build/4fe51ac78efe0ee6dfee041c5ea3b350/main.dart
#0 RunResult.throwException (package:flutter_tools/src/base/process.dart:118:5)
#1 _DefaultProcessUtils.run (package:flutter_tools/src/base/process.dart:344:19)

#2 Dart2WasmTarget.build (package:flutter_tools/src/build_system/targets/web.dart:346:5)

#3 _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:876:9)

#4 Future.wait. (dart:async/future.dart:528:21)

#5 _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:814:32)

#6 Future.wait. (dart:async/future.dart:528:21)

#7 _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:814:32)

#8 FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:637:16)

#9 WebBuilder.buildWeb (package:flutter_tools/src/web/compile.dart:93:34)

#10 BuildWebCommand.runCommand (package:flutter_tools/src/commands/build_web.dart:253:5)

#11 FlutterCommand.run. (package:flutter_tools/src/runner/flutter_command.dart:1558:27)

#12 AppContext.run. (package:flutter_tools/src/base/context.dart:154:19)

#13 CommandRunner.runCommand (package:args/command_runner.dart:212:13)

#14 FlutterCommandRunner.runCommand. (package:flutter_tools/src/runner/flutter_command_runner.dart:496:9)

#15 AppContext.run. (package:flutter_tools/src/base/context.dart:154:19)

#16 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:431:5)

#17 run.. (package:flutter_tools/runner.dart:98:11)

#18 AppContext.run. (package:flutter_tools/src/base/context.dart:154:19)

#19 main (package:flutter_tools/executable.dart:99:3)

Compiling lib/main.dart for the Web... 15,7s
Error: Failed to compile application for the Web.
```

### Flutter Doctor output

Doctor output

```console
[✓] Flutter (Channel stable, 3.29.0, on Arch Linux 6.13.5-arch1-1, locale de_DE.UTF-8) [234ms]
• Flutter version 3.29.0 on channel stable at /home/christian/snap/flutter/common/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 35c388afb5 (vor 4 Wochen), 2025-02-10 12:48:41 -0800
• Engine revision f73bfc4522
• Dart version 3.7.0
• DevTools version 2.42.2

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1) [2,0s]
• Android SDK at /home/christian/Android/Sdk
• Platform android-35, build-tools 35.0.1
• Java binary at: /usr/bin/java
This JDK was found in the system PATH.
To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
• Java version OpenJDK Runtime Environment (build 17.0.14+7)
• All Android licenses accepted.

[✓] Chrome - develop for the web [121ms]
• Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop [341ms]
• clang version 10.0.0-4ubuntu1
• cmake version 3.16.3
• ninja version 1.10.0
• pkg-config version 0.29.1

[!] Android Studio (not installed) [119ms]
• Android Studio not found; download from https://developer.android.com/studio/index.html
(or visit https://flutter.dev/to/linux-android-setup for detailed instructions).

[✓] IntelliJ IDEA Community Edition (version 2024.3) [119ms]
• IntelliJ at /var/lib/snapd/snap/intellij-idea-community/572
• Flutter plugin version 83.0.4
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] Connected device (2 available) [197ms]
• Linux (desktop) • linux • linux-x64 • Arch Linux 6.13.5-arch1-1
• Chrome (web) • chrome • web-javascript • Chromium 134.0.6998.35 Arch Linux

[✓] Network resources [644ms]
• All expected network resources are available.

! Doctor found issues in 1 category.
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.