Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gui: remove click+wait forever trap in Timing Report #5925

Conversation

oharboe
Copy link
Collaborator

@oharboe oharboe commented Oct 12, 2024

In small designs a large number of paths can easily be displayed, but for large designs this effectively runs forever.

To avoid this lockup trap, do not save number of timing paths.

This is not ideal, but if the choice is between saving path count and the gui "crashing" for large designs by accidentally clicking "Timing Report Update", then it seems better not to save for now.

Perhaps in the future, for large designs, a progress requester could be made and a "display fetched paths so far" could be added or the performance could be improved to the point that the problem can be ignored.

In small designs a large number of paths can easily be displayed,
but for large designs this effectively runs forever.

To avoid this lockup, do not save number of timing paths

Signed-off-by: Øyvind Harboe <[email protected]>
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

Copy link
Collaborator

@gadfort gadfort left a comment

Choose a reason for hiding this comment

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

If we are going to accept this, we need to open an issue so we can track fixing this.
It might be worth a testcase so someone can actually take a look at this and fix it.
Possibly a a better solution would be to implement a way to load the gui without loading the settings file (ie. honor -no_init).

Comment on lines 309 to 312
// NOTE! Don't save path count, this can introduce problems when
// switching between large and small designs. Clicking Timing Report
// Update for a large number of paths will freeze the GUI, effectively
// for large designs.
Copy link
Collaborator

Choose a reason for hiding this comment

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

it would be sufficient to just avoid loading the value (but still save it).

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

better?

Copy link
Collaborator

Choose a reason for hiding this comment

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

would not loading the settings file be sufficient instead?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I still want saved settings, I just don't want the settings that can lock up(as in it is faster to kill the GUI and reload) the GUI for large designs.

Copy link
Collaborator

Choose a reason for hiding this comment

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

I mean something like this: #5929

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Seems useful, but I don't understand the connection to this PR. In this PR, I'm trying to address a specific option that is causing the GUI to "lock up".

Copy link
Collaborator

Choose a reason for hiding this comment

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

no real connection, except it would also allow you to avoid loading the path_count, while preserving the functionality to save and load it until a solution to the speed is addressed. My personal preference would be to file an issue on the speed thing and see if it can be addressed before changing the default behavior for the GUI.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I just assumed it would take a considerable amount of time to address so I skipped that step...

Wrong?

Copy link
Collaborator

Choose a reason for hiding this comment

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

@oharboe without a testcase and a filed issue, then yes, it will take a very long time to get addressed. Please open an issue so it can be addressed at the root of the issue.

Copy link
Collaborator Author

@oharboe oharboe Oct 12, 2024

Choose a reason for hiding this comment

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

feature request added, this PR is "boarding up the broken window".

#5931

until a sufficiently good heuristic can be found or
a better way to handle long update times without
blocking the GUI

Signed-off-by: Øyvind Harboe <[email protected]>
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@oharboe
Copy link
Collaborator Author

oharboe commented Oct 22, 2024

@maliberty Ping? Move ahead with this?

@gadfort
Copy link
Collaborator

gadfort commented Oct 22, 2024

I still don't think this is the right solution. It's a solution that takes away functionality for the perceived benefit of one user with a particular problem (when I ran it on my machine the delay was a few minutes so not too terrible). I'd rather see a warning dialog over removing this.

@oharboe
Copy link
Collaborator Author

oharboe commented Oct 22, 2024

What would the warning say? your machine is locked up? The user knows that already.

@oharboe
Copy link
Collaborator Author

oharboe commented Oct 22, 2024

This is not a choice between nice alternatives: pick some misbehavior until it can be fixed properly.

@oharboe
Copy link
Collaborator Author

oharboe commented Oct 22, 2024

my understanding is that it is a nontrivial amount of work to fix properly(a generic progressbar with a "cancel" capability for long running operations in the GUI), so whatever misbehavior we pick(we have one today), we will be living with it for some time.

@maliberty
Copy link
Member

@gadfort already created an option to skip loading the settings. Is that sufficient?

@oharboe
Copy link
Collaborator Author

oharboe commented Oct 22, 2024

@gadfort already created an option to skip loading the settings. Is that sufficient?

No, this fix is to avoid a suckerpunch in the first place. If I knew to use that option, I wouldn't click "Update" and lock up the GUI in the first place...

@maliberty
Copy link
Member

Let's see if this is solvable in a nicer way - parallaxsw/OpenSTA#111

@oharboe oharboe closed this Oct 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants