Skip to content

Conversation

@AsCress
Copy link
Collaborator

@AsCress AsCress commented Sep 16, 2025

Fixes #2926

Summary by Sourcery

Prevent segmentation fault on Linux by verifying that the USB device opens successfully before configuring it

Bug Fixes:

  • Check the result of mDevice.open() in DesktopUSBCommunicationHandler and return early if it fails to prevent segfault on Linux
  • Log an error when opening the USB device fails

@AsCress AsCress requested a review from marcnause September 16, 2025 15:03
@AsCress AsCress self-assigned this Sep 16, 2025
@AsCress AsCress added Chore Changes to things that do not go into production flutter labels Sep 16, 2025
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Sep 16, 2025

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

The pull request enhances the USB communication handler by checking the result of the device open operation and aborting further setup if opening the device fails, preventing potential segfaults on Linux.

Sequence diagram for improved device opening in USB communication handler

sequenceDiagram
participant Handler as DesktopUSBCommunicationHandler
participant Device as UsbSerialDevice
participant Logger
Handler->>Device: open()
alt Device fails to open
Device-->>Handler: false
Handler->>Logger: e("Failed to open device")
Handler-->>Handler: return (abort setup)
else Device opens successfully
Device-->>Handler: true
Handler->>Device: setBaudRate(1000000)
Handler->>Device: setDataBits(dataBits8)
Handler->>Device: setStopBits(stopBits1)
end
Loading

File-Level Changes

Change Details Files
Added conditional handling for opening the USB device
  • Replaced unconditional device.open() call with an if check on its boolean result
  • Logged an error when device.open() returns false
  • Returned early from the method if device open fails to avoid subsequent calls
lib/communication/handler/desktop_comms_handler.dart

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 16, 2025

Build Status

Build successful. APKs to test: https://github.com/fossasia/pslab-app/actions/runs/17850626378/artifacts/4053354979.

Screenshots

Android Screenshots
iPhone Screenshots
iPad Screenshots

@mariobehling
Copy link
Member

Is there an issue about this, which one? Please stick to best practices https://blog.fossasia.org/open-source-developer-guide-and-best-practices-at-fossasia/

@AsCress
Copy link
Collaborator Author

AsCress commented Sep 17, 2025

@mariobehling #2926

@AsCress AsCress merged commit ea8d506 into fossasia:flutter Sep 19, 2025
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Chore Changes to things that do not go into production flutter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Linux app segfaults in the absence of USB permissions

3 participants