Skip to content

Lots of memory usage with GBs sized files in diff #1698

Open
@willtonkin

Description

@willtonkin

Describe the bug

Opening the app in a repo containing a large uncommitted file has gitui quickly consuming all available memory on my system. I have to quit quickly before my system halts.

To Reproduce

  1. place a multi GB file in a repo
  2. open gitui
  3. scroll down and select this file
  4. (optional) scroll away and select another file, notice that memory usage continues to climb

Expected behaviour

It took me a while to notice the issue, as it was taking down my machine before I could play-around, I was assuming it was another cause.

It appears that gitui was trying to present the diff of the new uncommitted file to me. I believe the flame graph below confirms that git_diff_file_content__init_from_src().

Some potential solutions:

  1. Perhaps have a limit on the size of file contents we're willing to present to the user in the diff viewer
  2. or perhaps only present the file content on-focus of the diff viewer (on the right)

Screenshots
Screenshot from 2023-05-23 08-39-05

Context (please complete the following information):

  • Fedora Linux 38.20230520.0 (Silverblue)
  • gitui 0.20.1
  • Rust version: 1.69.0

Additional context

make profile which produced the following flamegraph:

flamegraph

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdormantMarked by stale bot on close

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions