Skip to content

Workshop breaks when a symlink can't be resolved #924

Description

@mikeraymond7

Issue

Workshop fails to get GPU information when a device symlink can't be resolved (i.e. a device was physically disconnected)

Relevant context

I went to workshop launch and received the following output:

 error: cannot perform the following tasks:
  - Setup "system" SDK profile (Failed retrieving GPU information: Failed adding device information for "/sys/class/drm/card0/device": Failed reading "/sys/class/drm/card0/device/de
  vice": open /sys/class/drm/card0/device/device: no such file or directory)
  "dev" launch aborted

workshop remove on a completely different workshop resulted in:

error: cannot perform the following tasks:
- Disconnect "dev/copilot:copilot-config" from "dev/system:mount" (Failed retrieving GPU information: Failed adding device information for "/sys/class/drm/card0/device": Failed reading "/sys/class/drm/card0/device/device": open /sys/class/drm/card0/device/device: no such file or directory)

The issue here is that path /sys/class/drm/card0/device/device exists, but is a broken symlink to a DisplayLink device:

lrwxrwxrwx 1 root root 0 Jul  7 10:00 /sys/class/drm/card0/device/device -> ../../pci0000:00/0000:00:0d.0/usb2/2-2/2-2.1

When I reconnected the DisplayLink device, the symlink was resolved and all of my workshop commands worked again. I cannot launch or remove any workshop when I am away from my desk unless I uninstall the evdi module, which seems undesireable.

What it should do

Seeing as the DisplayLink has nothing to do with workshop, this definitely doesn't seem like ideal behavior. I suspect that the GPU search functionality should pass on broken symlinks rather than aborting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions