Giter VIP home page Giter VIP logo

Comments (11)

iTrooz avatar iTrooz commented on September 26, 2024 1

A complex but definitive solution to artifact size would be to store the debug info of release versions ourselves instead of bundling it in artifacts, and make ImHex upload stacktraces with code offsets to our server, where we could map them to files/lines again.

from imhex.

iTrooz avatar iTrooz commented on September 26, 2024 1

Ohh, I never knew symbol servers existing. That could be a way to solve the problem indeed. But I don't plan to do it right now. It someone wants to build a PoC, please do so. I'm imagining something like a function in ImHex that calls the symbol server when crashing, or an implementation in our the API web server when they receive raw "stacktraces" without symbols from ImHex instances

Some links that seem useful:
https://stackoverflow.com/a/35556262
https://docs.sentry.io/platforms/apple/data-management/debug-files/symbol-servers/
https://wiki.archlinux.org/title/Debuginfod (used by ArchLinux for downloading debug info for the libraries in pacman)

I think the pdbs are needed by the stack tracer implementation used , so that the debuggers servers are not something that can be used here.

I'm sure this can be worked around

from imhex.

iTrooz avatar iTrooz commented on September 26, 2024

LTO seems to influence the ccache cache sizes a lot
the ArchLinux ccache cache is 150MB with LTO, and 24MB without
See https://gist.github.com/iTrooz/740f00f0935e365534f5a76dab0e7738 to measure section sizes for ELF

from imhex.

iTrooz avatar iTrooz commented on September 26, 2024

building in Release mode instead of RelWithDebInfo helps a lot with artifacts size. For example, Ubuntu 22.04 DEB went from 132MB to 16.2MB. Windows Installer went from 217MB to 24.2MB
More information: https://github.com/iTrooz/ImHex/actions/runs/9231528139 and https://github.com/iTrooz/ImHex/actions/runs/9231536431

from imhex.

iTrooz avatar iTrooz commented on September 26, 2024

using -gz=zlib (or fallback on -gz doesn't seem to improve cache sizes (Checked on Ubuntu 22.04 and ArchLinux builds)

Artifacts sizes do not improve either. In fact, AppImage seems to have gone from 141MB to 162MB
Windows and MacOS do not support this option.

Note that actual ELF files produced drastically reduce in size (e.g. 140.6MiB to 56.4MiB for libimhex for Ubuntu 22.04). The reason we are not observing changes in artifacts is because packages formats (e.g. .deb, .rpm, .tar.zst..) are already compressed.

NOTE: This means that this optimisation would still be useful once the package installed

More information: https://github.com/iTrooz/ImHex/actions/runs/9231528139 https://github.com/iTrooz/ImHex/actions/runs/9235290159

from imhex.

Crystal-RainSlide avatar Crystal-RainSlide commented on September 26, 2024

Some software provides separate pdb file downloads for debugging, is this approch possible for ImHex?

from imhex.

iTrooz avatar iTrooz commented on September 26, 2024

Probably, but your approach is missing some details. Who would download and use these separate debugging files ?

I offer an answer to this in my last comment

from imhex.

Crystal-RainSlide avatar Crystal-RainSlide commented on September 26, 2024

Who would download and use these separate debugging files ?

AFAIK, WinDbg, "who" keep downloads symbol files automatically, until the disk is filled

from imhex.

iTrooz avatar iTrooz commented on September 26, 2024

If you have a source please share it, but I'm doubtful it would do that, because its not its purpose. WinDbg is a debugger, why would it even be installed on a user machine, and why would it manage storage

from imhex.

paxcut avatar paxcut commented on September 26, 2024

I think Crystal-Rain Slide means that debuggers can have symbol servers defined and when you try to debug code it downloads pdbs for libraries and things you may need. Those are microsoft servers though but you can use any server like a folder or an http address. I think the pdbs are needed by the stack tracer implementation used , so that the debuggers servers are not something that can be used here.

from imhex.

paxcut avatar paxcut commented on September 26, 2024

I don't know much about how the process of creating useful stack traces, but if symbol servers can be used for them then I suppose it would be the natural choice. symbol servers are not exclusive to windows, gdb also supports them and there may be linux servers that can be used as well. Im not 100% sure but i think it is likely.

from imhex.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.