Skip to content

[BUG] IME processing is highly sensitive to CPU usage. #416

@athene20

Description

@athene20

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

While there are generally no issues when writing in English, Hangul—being a composite script—exhibits significant instability depending on CPU usage.
The video below shows the results of a test conducted on a low-spec server while performing simple background tasks and recording the process with OBS. As you can see, I am typing in Hangul, but most of the text is not displayed correctly.

2026-04-16.16-11-23.mp4

Expected Behavior

Keyboard input should work properly regardless of usage.

Steps To Reproduce

  1. Without any background job.
  2. There are almost no issues when writing in Hangul using a lightweight text editor (e.g., Kate).
  3. When performing background tasks that consume a relatively high amount of CPU resources.
  4. With heavy programs (e.g., web browsers), typing in Hangul is practically impossible, and even with lightweight programs (e.g., Kate), it is difficult to type.

Environment

- OS: Ubuntu 24.04.3 LTS
- How docker service was installed: distro's packagemanager

CPU architecture

arm64

Docker creation

---
services:
  linux:
    image: lscr.io/linuxserver/webtop:ubuntu-kde
    container_name: linux
    hostname: linux
    restart: unless-stopped
    privileged: true
    security_opt:
      - seccomp:unconfined
    environment:
      - PUID=1001
      - PGID=1001
      - TZ=Asia/Seoul
      - SUBFOLDER=/
      - DISABLE_IPV6=true
    ports:
      - 3000:3000
      - 3001:3001
    volumes:
      - ./data:/config
      - ./docker:/var/lib/docker
      - /dev/shm:/dev/shm
    devices:
      - /dev/dri:/dev/dri
    networks:
      - private

networks:
  private:
    name: private

Container logs

linux  | INFO:data_websocket:Received START_VIDEO for 'primary'. Starting its stream.
linux  | INFO:data_websocket:Found existing layout for 'primary'. Starting capture with: {'x': 0, 'y': 0, 'w': 2560, 'h': 1286}
linux  | INFO:data_websocket:Preparing to start capture for display='primary': Res=2560x1286, Offset=0x0
linux  | INFO:main:Parsed DRI node '/dev/dri/renderD128' to index 0.
linux  | INFO:data_websocket:Video chunk sender started for display 'primary'.
linux  | INFO:data_websocket:SUCCESS: Capture started for 'primary'.
linux  | INFO:data_websocket:New frame backpressure task started for display 'primary'.
linux  | INFO:data_websocket:Frame-based backpressure logic task started for display 'primary'.
linux  | INFO:data_websocket:Client settings received, proceeding with backpressure loop for 'primary'.
linux  | [VAAPI @ 0xfb94cc03f0a0] libva: /usr/lib/aarch64-linux-gnu/dri/virtio_gpu_drv_video.so init failed
linux  | [VAAPI @ 0xfb94cc03f0a0] Failed to initialise VAAPI connection: 2 (resource allocation failed).
linux  | VAAPI_INIT: Failed to create VAAPI hardware device context: -5
linux  | VAAPI Encoder initialization failed. Falling back to CPU.
linux  | X Shared Memory Extension available.
linux  | XShm setup complete for 2560x1286.
linux  | CPU cores available: 4
linux  | Stream settings active -> Res: 2560x1286 | FPS: 60.0 | Stripes: 1 | Mode: H264 (CPU) FullFrame | CRF: 25 | PaintOver CRF: 18 (Burst: 5f) | Colorspace: I420 (Limited Range) | Damage Thresh: 10f | Damage Dur: 20f
linux  | INFO:webrtc_input:Set clipboard content, length: 11
linux  | INFO:data_websocket:Received STOP_VIDEO for 'primary'. Stopping stream.
linux  | INFO:data_websocket:Stopping all streams for display 'primary'...
linux  | INFO:data_websocket:Backpressure logic task for 'primary' cancelled.
linux  | INFO:data_websocket:Backpressure logic task for 'primary' finished.
linux  | INFO:data_websocket:Backpressure task for 'primary' was stopped. Resetting its frame IDs.
linux  | INFO:data_websocket:Resetting frame IDs for display 'primary'.
linux  | INFO:data_websocket:Broadcasting primary pipeline reset to all 1 clients: PIPELINE_RESETTING primary
linux  | Capture loop stopped. X resources released.
linux  | INFO:data_websocket:Successfully stopped all streams for display 'primary'.
linux  | INFO:data_websocket:Video chunk sender for 'primary' cancelled.
linux  | INFO:data_websocket:Video chunk sender for 'primary' finished.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions