Status report: consultancy team, week 11, 2025

Caolan

  • crashtesting, a CellAttributeHelper related problem
    https://gerrit.libreoffice.org/c/core/+/182743
  • memory optimization
  • tcmalloc + pprof + flamegraph to analyze what is
    consuming memory
    → pprof has a (undocumented?, not in my man page anyway, but it
    works) --collapsed option to turn its output into something
    suitable for flamegraph, so
    pprof --collapsed coolforkit-ns /tmp/kitheap.heap |
    flamegraph.pl --color=mem
    gives useful output
  • liblangtag uses a lot of memory to create a hashmap-alike thing
    but we create that during preload already, so can put that aside.
  • can see that long-lived list/comboboxes retain a surprisingly
    large amount of memory. Some VirtualDevice, and some GlyphCache
  • deltas generation requires space
  • table autoformat relating things notable in writer mem profile
  • memory optimization
    tcmalloc vs glibc, a decent “Private” memory size saving in favor
    of tcmalloc for small and large sample writer+calc documents
  • see if any of the tcmalloc hooks could be used to redirect
    pre-fork/preload allocations to some specific pages so those could
    be left entirely untouched by later allocations/metadata-writes
  • doesn’t look possible to me with what’s on offer, maybe doable by
    trying a similar approach though.
  • websocket not seen as closed by client when permission denied
    call onFinishCallback on early error cases too by caolanm · Pull Request #11326 · CollaboraOnline/online · GitHub
  • odd crash seen in crash emails, as if mutex use before init
    https://github.com/CollaboraOnline/online/pull/11323
  • bootstrap demo reuse of character sidebar panel for chart
  • Typically its the toplevel “XFrame” that is seen, not the one
    belonging to embededed things like the chart (and math?) which
    is actually active
    https://gerrit.libreoffice.org/c/core/+/182878/1
  • And then there is a problem where existing panels are
    “recycled”, but remain bound to the original XFrame, so that
    complicates things, but for proof of concept bodge around that
    and then chart gets the commands and queries from the panel
    https://gerrit.libreoffice.org/c/core/+/182879/1
  • memory optimization
  • fix merge conflict for pahole work and merge
  • memory optimization
    https://gerrit.libreoffice.org/c/core/+/182927 to disable
    double-buffer thing for combo/list boxes for online
  • SwTableAutoFormat DefaultBoxFormat is large and we will
    always end up calling getStyle in a document, so we could
    create that during preload
    https://gerrit.libreoffice.org/c/core/+/182972
  • but there are still near-duplicates of that created, so more
    thought needed to do something more useful there.

Chris

  • Work on mmeeks’ patch - #11255 - don’t free tile canvases, but queue them for re-use (PR #11304)

Next:

  • Scrolling in Firefox on a 4k monitor is very slow
  • Sidebar reopening Triggers double canvas in Impress and Draw

Mike

  • Calc slow with Select All
    • Is this because of too many columns allocated?
    • The document has formatting for about the whole area, excluding parts of several last columns
    • Created https://gerrit.libreoffice.org/c/core/+/182930
    • Preparing a patch to check if changing last columns’ formatting actually changes them compared to the unallocated default, to avoid their allocation
    • This doesn’t help, allocation still happens, the check only takes more time
    • Prepared a sample that has only a few columns
    • The problem is still reproducible
    • Several problems:
      • Unneeded height calculation for preview (need to avoid that for font preview)
      • Unneeded column allocation (still debugging)
      • The height recalculation happens several times
    • Working on a patch for the first problem (SID_ATTR_CHAR_PREVIEW_FONT / ScViewFunc::UpdateSelectionArea)

Miklos

Finished work on https://github.com/CollaboraOnline/online/issues/11226