← Back to issue list

Bad error handling for ill-formatted platforms

View original Github issue

Metadata

Project
snapcraft
Number
#6484
Type
issue
State
open
Author
cmatsuoka
Labels
—
Created
Updated
Closed
—

Current evaluation

Crash when platforms is incorrectly specified as a list instead of a mapping; requests a user-friendly error message instead of an AttributeError traceback.

Suggested action: keep open

Reason: The issue reports a clear crash (AttributeError: 'list' object has no attribute 'items') when platforms is malformed. Adding a type check to raise a descriptive validation error is straightforward. The traceback indicates the code resides in craft-application, so the fix may require an upstream patch or dependency update.

Evaluated by: mr-cal-bot

Impact: 30 Quick Win: 22 Complexity: 20 Confidence: 85 Actionability: 90

Issue body

### Check existing issues - [x] I've verified that this bug isn't described by any existing issues. ### Bug description A crash trace is displayed if `platforms` members are declared as a list. A nicer, helpful error message should be displayed instead. ### Steps to reproduce Create a core26 snapcraft.yaml declaring platforms as a list. ### Environment core26 managed build with stable snapcraft (9.1.4) ### snapcraft.yaml ```yaml platforms: - amd64: - arm64: ``` ### Log output ```shell $ snapcraft pack --verbose Traceback (most recent call last): File "/snap/snapcraft/19274/bin/snapcraft", line 12, in <module> sys.exit(main()) ^^^^^^ File "/snap/snapcraft/19274/lib/python3.12/site-packages/snapcraft/application.py", line 358, in main return app.run() ^^^^^^^^^ File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/application.py", line 557, in run self._initialize_craft_parts() File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/application.py", line 657, in _initialize_craft_parts self._set_plugin_group() File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/application.py", line 639, in _set_plugin_group build_plan = self.services.get("build_plan").plan() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/services/buildplan.py", line 64, in plan self.__plan = self.create_build_plan( ^^^^^^^^^^^^^^^^^^^^^^^ File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/services/buildplan.py", line 144, in create_build_plan raw_project["platforms"] = project_service.get_platforms() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/services/project.py", line 286, in get_platforms self.__platforms = self._preprocess_platforms(raw_project["platforms"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/services/project.py", line 260, in _preprocess_platforms cls._vectorise_platforms(platforms) File "/snap/snapcraft/19274/lib/python3.12/site-packages/craft_application/services/project.py", line 227, in _vectorise_platforms for name, data in platforms.items(): ^^^^^^^^^^^^^^^ AttributeError: 'list' object has no attribute 'items' ```

Evaluation history

Date Model Scores Action Summary
qwen/qwen3.6-35b-a3b
Impact: 30
Quick Win: 22
Complexity: 20
Confidence: 85
Actionability: 90
keep open Crash when platforms is incorrectly specified as a list instead of a mapping; requests a user-friendly error message instead of an AttributeError traceback.

Update history

Date Change
created

Related issues

Issue Project State Summary Similarity
#1217 Bad error handling for ill-formatted platforms craft-application open Crash with AttributeError when platforms is declared as a list instead of a dict in snapcraft.yaml. Triaged, with a developer interested in fixing it.
79%