Collabora Online is a collaborative online office suite based on LibreOffice technology. This is also the source for the Collabora Office apps for iOS and Android.
 
 
 
 
 
 
Go to file
Caolán McNamara de9dd4f0a6 wasm often doesn't get tiles after invalidates
ClientSession::handleTileInvalidation returns early with _tileWidthPixel
(etc) of 0 because _tileWidthPixel (etc) never get set

These are supposed to get set from 'clientzoom' which the javascript
side sends. clientzoom arrives, but the attempt is made to dispatch via
a thread and during startup there are enough messages dispatched via
threads to overwhelm wasm

bundle.js:56376 ================ handle_cool_message(): 'clientvisiblearea x=-3915 y=0 width=20640 height=7980 splitx=0 splity=0'
bundle.js:56377 Tried to spawn a new thread, but the thread pool is exhausted.
This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.
If you want to increase the pool size, use setting `-sPTHREAD_POOL_SIZE=...`.
If you want to throw an explicit error instead of the risk of deadlocking in those cases, use setting `-sPTHREAD_POOL_SIZE_STRICT=2`.
bundle.js:56376 ================ handle_cool_message(): 'clientzoom tilepixelwidth=256 tilepixelheight=256 tiletwipwidth=1536 tiletwipheight=1536'
bundle.js:56377 Tried to spawn a new thread, but the thread pool is exhausted.
This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.
If you want to increase the pool size, use setting `-sPTHREAD_POOL_SIZE=...`.
If you want to throw an explicit error instead of the risk of deadlocking in those cases, use setting `-sPTHREAD_POOL_SIZE_STRICT=2`.
bundle.js:56376 ================ handle_cool_message(): 'tilecombine...'

The 'clientzoom' never get processed and so
ClientSession::handleTileInvalidation returns early with _tileWidthPixel
(etc) of 0 because _tileWidthPixel (etc) never get set.

this std::thread dispatching of messages is similar to seen in
gtk/mobile.cpp in similar code, and also existed in
android/lib/src/main/cpp/androidapp.cpp before getting replaced
in:

commit 155718796e
Date:   Fri Jul 19 16:43:44 2019 +0200

    android: Fix a threading / ordering issue.

follow the same simpler android model here.

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I3b5e57b3d91bb80fbae90b269300581825518d7f
2023-12-12 16:23:00 +00:00
.git-hooks git-hooks: pre-commit: clean up not needed tweak of the perl library path 2021-07-12 19:47:59 +03:00
.github chart-releaser: fix 422 Validation Failed 2023-11-24 12:14:12 +01:00
.gitpod-files Gitpod: update defaults in coolwsd-gitpod.xml 2023-11-15 15:28:48 +01:00
android Translated using Weblate (Odia) 2023-11-24 19:24:20 +01:00
browser Fix filter by color in Calc (auto-filter) 2023-12-12 14:20:33 +01:00
common wasm: log to stdout instead of stderr 2023-12-09 19:22:24 +00:00
cypress_test cypress: added multiuser annotation tests 2023-12-07 22:38:59 +05:30
debian Bump version to 23.05.6.2 2023-12-11 21:59:12 +01:00
docker docker: added a few labels 2023-11-16 11:13:57 +01:00
etc backward compatibility: /lool/convert-to endpoint 2021-11-19 13:27:27 +01:00
fuzzer wsd: check for nullptr channel in AdminSocketHandler 2023-12-01 15:35:39 +00:00
gtk Actually use the safer (escaped) string we construct 2023-01-06 16:09:52 +02:00
indexing indexing: rename 'lool' -> 'cool' 2021-11-17 09:17:31 +01:00
ios Bump version to 23.05.6.1 2023-12-04 16:39:02 +01:00
kit duplicate jsdialog messages seen in UnitBadDocLoad 2023-12-05 11:38:24 +00:00
kubernetes/helm chart-releaser: fix 422 Validation Failed 2023-11-24 12:14:12 +01:00
man Add cli option to use settings from env variables 2023-09-23 12:44:50 +02:00
net spdx: improve machine and human readability of headers. 2023-11-14 19:36:31 +00:00
scripts wsd: test: better run_unit.sh 2023-10-24 09:20:32 +02:00
test cid#336285 Dereference null return value 2023-12-11 09:25:59 +01:00
tools spdx: improve machine and human readability of headers. 2023-11-20 14:30:02 +00:00
wasm wasm often doesn't get tiles after invalidates 2023-12-12 16:23:00 +00:00
wsd serve wasm metadata 2023-12-11 19:28:18 +00:00
.cirrus.yml Cirrus CI: use core assets of version 23.05 2023-03-14 12:01:38 +01:00
.clang-format clang-format: turn off BreakBeforeBinaryOperators 2021-04-23 09:51:06 +02:00
.clang-tidy Png: avoid multiplication at int precision, then converting to long 2016-12-05 11:56:46 +01:00
.gitignore Ignore temp file in the repo. 2023-10-09 00:10:20 +01:00
.gitpod.dockerfile GitPod: Fix No package 'libzstd' found 2022-11-17 07:39:39 +01:00
.gitpod.yml GitPod: use core assets of version 23.05 2023-03-14 12:04:51 +01:00
.mailmap Add .mailmap 2021-11-26 11:44:09 +01:00
AUTHORS Apply the pre-branch rename script to re-organize the source. 2016-11-25 09:58:48 +00:00
CODE_OF_CONDUCT.md Complete the CoC statement 2020-10-20 20:45:57 +03:00
CONTRIBUTING.md Fix typo in CONTRIBUTING.md 2022-07-27 09:59:31 +02:00
COPYING fix license headers 2020-10-01 11:56:43 +02:00
ChangeLog Apply the pre-branch rename script to re-organize the source. 2016-11-25 09:58:48 +00:00
Makefile.am wasm: proxy wopi documents 2023-11-27 10:48:44 +00:00
NEWS Apply the pre-branch rename script to re-organize the source. 2016-11-25 09:58:48 +00:00
PROBLEMS mutex include cleanup. 2022-08-31 21:31:31 +01:00
README.CONTRIBUTING.md Contriburing instructions: add a section on commit messages 2023-09-12 08:45:14 +02:00
README.FILENOTICES.md spdx: improve machine and human readability of headers. 2023-11-14 19:36:31 +00:00
README.md Readme: remove temporally the IRC in favor of matrix 2023-11-16 17:42:19 +01:00
SECURITY.md Update SECURITY.md 2021-07-05 12:24:14 +02:00
autogen.sh No need to cd back before exiting a shell script that is run as a command 2022-12-07 15:06:16 +02:00
browsersync-config.js browser: update config files 2021-11-10 17:18:56 +01:00
config.h.in configure: WASMAPP is now defined for WASM targets 2023-12-09 19:22:24 +00:00
config_version.h.in Split config.h into separate headers to avoid extensive rebuild 2022-09-05 12:32:49 +01:00
configure.ac Bump version to 23.05.6.2 2023-12-11 21:59:12 +01:00
coolkitconfig-mobile.xcu sc: set hyperlink MS interoperability true in online 2023-08-27 18:32:08 +02:00
coolkitconfig.xcu.in Enable autocorrect option to add bulltes 2023-09-11 11:48:47 +02:00
coolwsd-systemplate-setup copy CA certificates to jail 2023-11-14 17:01:49 +00:00
coolwsd-welcome.xml Remove the old vex-based welcome dialog code 2022-04-04 10:53:07 +02:00
coolwsd.init.rhel6 rename: remaining lool->cool changes 2021-11-18 14:14:11 +01:00
coolwsd.service rename: remaining lool->cool changes 2021-11-18 14:14:11 +01:00
coolwsd.spec.in rpm: BuildRequires - those python packages have different names on differenct OS versions 2023-11-06 12:07:33 +01:00
coolwsd.xml.in Add list of allowed data sources 2023-12-01 15:25:47 +00:00
discovery.xml Editing of document templates does not work well currently 2022-03-15 14:05:12 +01:00
favicon.ico replace favicon.ico (Collabora Online logo) 2020-12-14 13:56:00 +01:00
g Use custom local branch name as explicit remote user branch name for PR 2021-07-16 08:53:58 +02:00
jsstress.in rename coolstress to jsstress 2021-11-16 11:16:45 +01:00
trace-event.sample2.json Try repeated async events with same name and id 2021-06-23 12:26:27 +03:00

README.md

Open in Gitpod

Collabora Online

Master: Pull request policy

irc Telegram Forum Website L10n Gitpod Ready-to-Code

Your own private Office in the Cloud

Get in touch 💬

Key features

  • View and edit text documents, spreadsheets, presentations & more
  • Collaborative editing features
  • Works in any modern browser no plugin needed
  • Open Source primarily under the MPLv2 license. Some parts are under other open source licences, see e.g. browser/LICENSE.

Website

For many more details, build instructions, downloads and more please visit https://collaboraonline.github.io/

Developer assistance

Please ask your questions on any of the bridged Matrix/Telegram rooms

Join the conversation on our Discourse server at https://forum.collaboraonline.com/

Watch the tinderbox status (if it's green) at https://cpci.cbg.collabora.co.uk:8080/job/Tinderbox%20for%20online%20master%20against%20co-22.05/

Development bits

This project has several components:

  • wsd/
    • The Web Services Daemon - which accepts external connections
  • kit/
    • The client which lives in its own chroot and renders documents
  • common/
    • Shared code between these processes
  • browser/
    • The client side JavaScript component
  • test/
    • C++ based unit tests
  • cypress_test/
    • JavaScript based integration tests

Please consult the README files in the component's directory for more details:

iOS and Android apps

See the corresponding READMEs:

GitPod

Head over to https://collaboraonline.github.io/post/build-code/#build-code-on-gitpod and follow the steps.

Enjoy!