Skip to content

The process name of an internal UTM service appears garbled (mojibake) on macOS in a Japanese locale. #7563

@kkdd

Description

@kkdd

Hello,
The process name of an internal UTM service appears garbled (mojibake) on macOS in a Japanese locale.

Expected process name:

  • UTMの標準マシンサービス (= “UTM Standard Machine Service”)

Actual displayed process name:

  • UTMの莉ョ諠ウ繝槭す繝ウ繧オ繝シ繝薙せ

Configuration

  • UTM Version: 4.7.5
  • macOS Version: 15.7.3 macOS Sequoia
  • Mac Chip : M4 Max

Environment
• OS: macOS (Japanese language environment)
• Locale: ja_JP
• System encoding: UTF-8
• Application: UTM for macOS
• Observed in:
• Activity Monitor
• Other process list tools (GUI or CLI such as ps, top)

Observed Behavior
• The display name of an internal UTM helper / service process is garbled.
• The process itself functions normally; only the displayed name is corrupted.
• The issue likely does not appear in English locales.

Expected Behavior
• The process name should be displayed correctly as UTF-8 in Japanese environments.
• Alternatively, it should fall back to a safe ASCII / English name rather than showing mojibake.

Technical Analysis (Suspected Root Cause)

This mojibake matches a well-known UTF-8 ⇄ Shift_JIS (CP932) misinterpretation pattern.

Likely transformation path:
1. The process display name is originally generated as UTF-8
2. At some point, it is misinterpreted as Shift_JIS (CP932)
3. The corrupted byte sequence is then rendered again as UTF-8

As a result:
標準 → 莉ョ諠ウ
マシン → 繝槭す繝ウ
サービス → 繧オ繝シ繝薙せ

This is a classic Japanese mojibake signature.

Why This Likely Happens in UTM

UTM internally combines multiple technology layers with different string and locale models:
• Swift / Objective-C (UTF-16 / UTF-8)
• Rust (UTF-8)
• QEMU (C, locale-dependent)
• macOS launchd / LaunchServices

Potentially problematic areas:
• Process name generation via char * (C APIs)
• Missing or implicit setlocale() usage
• Assumptions of non-UTF-8 encodings in helper / QEMU-related code paths
• Multiple sources for process names (argv[0], CFBundleName, CFBundleDisplayName)

This kind of mixed stack makes encoding boundary issues more likely.

Impact
• No functional or security impact observed.
• However:
• Process monitoring becomes confusing for Japanese users
• Reduces readability and usability
• Indicates an internationalization (i18n) robustness issue

Suggestions / Possible Fixes
• Ensure that all process display names are:
• Explicitly handled as UTF-8 end-to-end, or
• Normalized to ASCII / English names
• Review C / QEMU code paths for locale and encoding assumptions
• Add test coverage or QA checks for ja_JP.UTF-8 environments

Notes

This appears to be an application-side internationalization issue, not a macOS OS bug.

If needed, I can also provide:
• A shorter issue template version
• A minimal UTF-8 ⇄ Shift_JIS reproduction example
• Code-level hints for where to apply fixes

This should be suitable for submitting directly to the UTM project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions