Skip to content

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

Open

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.

Activity

  1. jonathan-conder commented on Jul 7, 2026

    @jonathan-conder
    Contributor

    Thanks for the report. This is a bug in LXD rather than Workshop. If you like I can report it upstream, or you can do it. It should be possible to reproduce with this command:

    # lxc info --resources
  2. mikeraymond7 commented on Jul 7, 2026

    @mikeraymond7
    Author

    Thanks for the report. This is a bug in LXD rather than Workshop. If you like I can report it upstream, or you can do it. It should be possible to reproduce with this command:

    lxc info --resources

    I can add it there. Thanks. I suppose that closes this then?

  3. jonathan-conder commented on Jul 7, 2026

    @jonathan-conder
    Contributor

    We can probably add a workaround as well, leave it open for now

  4. jonathan-conder commented on Jul 7, 2026

    @jonathan-conder
    Contributor

    I'm also wondering why there's a broken symlink in the first place, might be a kernel bug

  5. mikeraymond7 commented on Jul 7, 2026

    @mikeraymond7
    Author

    I'm also wondering why there's a broken symlink in the first place, might be a kernel bug

    The DisplayLink driver was a pain to install and setup, so I wouldn't be surprised if the driver itself has some funky behavior. Either way, seems like LXD should warn instead of aborting.

  6. jonathan-conder commented on Jul 7, 2026

    @jonathan-conder
    Contributor

    It looks like DisplayLink/evdi#581 might fix it?

    evdi: destroy dynamic devices when their USB parent is removed

    Since it was already a pain to install, hopefully it's not too much of a pain to apply this patch. If you give me your distro and kernel version I might be able to build it for you.

  7. jonathan-conder commented on Jul 7, 2026

    @jonathan-conder
    Contributor

    Might be easier to downgrade the kernel instead

  8. mikeraymond7 commented on Jul 8, 2026

    @mikeraymond7
    Author

    Looks like that PR probably will fix it. I'm not honestly too worried about it right now though, I'll just workshop from my desk 😂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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