nextcloud / documentserver_community

Document server for onlyoffice
https://apps.nextcloud.com/apps/documentserver_community
133 stars 29 forks source link

Nextcloud log logs error every 5 minutes: OCA\DocumentServer\Document\DocumentConversionException: # # Fatal error in v8::ToLocalChecked # Empty MaybeLocal. # Received signal 4 ILL_ILLOPN #213

Closed drudgede closed 1 week ago

drudgede commented 3 years ago

Hello everyone,

I noticed in my Nextcloud log that all of a sudden, every five minutes (probably due to a cronjob) an error is generated in my Nextcloud instance and written to the logs. I am not sure what exactly causes the problem.

The stack trace is always the same and looks like the following:

OCA\DocumentServer\Document\DocumentConversionException:;# # Fatal error in v8::ToLocalChecked # Empty MaybeLocal. # Received signal 4 ILL_ILLOPN 7f0533cb3849
==== C stack trace =============================== [0x7f0533cb4a92] [0x7f0532ed4980] [0x7f0533cb3849] [0x7f05334cf072] [0x7f05334c3fb1] [0x7f0533491ebe] [0x7f0533488643] [0x000000748550] [0x00000076011b] [0x000000767895] [0x00000076af1d] [0x00000054034f] [0x7f0532754bf7] [0x000000745f93] [end of stack trace] Illegal instruction
error

I was not yet able to find out what exactly caused this error and why this happed from one day to another. Here are the parameters of my instance:

Is there any way I can find out what happened and how I can fix the problem?

Thanks in advance! Mark

api2001 commented 2 years ago

Hi Mark or anyone!

Do you have any news on this issue? I have the same problem here. On Nextcloud 21.0.7 and now after an update also on Nextcloud 22.2.3. I use a webspace at the webhoster Ionos (1and1). Changes in OnlyOffice do not find the way to the files. If you do a change it looks as if OnlyOffice saves the edits because when you reopen the file in OnlyOffice the changes are still there. But in the background no file got updated. If you download a file, changes are not in there. The log in Settings shows the errors about every 5 minutes (cron.php) for each not-saved file and you can manually trigger those errors in ssh shell by running: php occ documentserver:flush

Does anyone have a solution or at least a hint where to look at? Thanks and best, APi

api2001 commented 2 years ago

Further analysis resulted in: The component x2t actually works fine. When calling that manually on the server or even from a test.php script it does what it should do: Convert example given a Editor.bin file to a saved.xlsx. However it fails when called by or inside Nextcloud. help. It would be so great to have OnlyOffice running on the Nextcloud...

drudgede commented 2 years ago

Hello @api2001, unfortunately I was not able to figure out what caused the problem. Due to the massive amount of errors in the logs and, changes inside the documents which were not stored after closing them and the lack of support/help online, I decided to drop OnlyOffice and switched to Collabora. Collabora is working way more smoothly and reliable on my setup, it's basically a set-up-and-forget environment. And luckily, the layout and styles inside the documents were not scrambled but were directly compatible, so I had not to change any document afterwards. If it's an option for you, I recommend to switch from OnlyOffice to Collabora.

api2001 commented 2 years ago

Hi @drudgede, okay thanks for your honest opinion. I tried Collabora now with the CODE server. However it also does not work or has other faults: When opening a docx it says "Failed to load Collabora Online" and logs mention some "cURL error 28: Operation timed out after 45000 milliseconds with 0 bytes received". Error is known in community but none of the few solutions helped. Is it maybe that on these shared webhosting webspaces such apps simply are not wanted and that you really need an own server to configure? Best, api

drudgede commented 2 years ago

Hi @api2001, I'm not pretty sure about this error. I actually have an own server with the Collabora CODE docker container running. Additionally, there is an Nginx-Reverse Proxy running according to this and this documentation.

If it's installed, you should make sure the following settings:

docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=cloud\\.mydomain\\.tld|mydockerserver\\.mydomain\\.tld" --name collabora -e "username=collaborauser" -e "password=mypassword" --restart always -e "extra_params=--o:welcome.enable=false" collabora/code

Here, 9980 is the port where Collabora is listening and its also the port where the reverse proxy is redirecting the traffic to. To be honest, I'm not sure if the domain of the docker server is required in the domain parameter, too, since it's behind an Nginx reverse proxy, but this configuration works for me. Please make sure that you double-escape the dots in the domain parameter and separate the domains with a | symbol. The username and password can be arbitrary and is only relevant if you want to check which documents are opened.

My Nginx reverse proxy file (/etc/nginx/sited-enabled/collabora) looks like this:

server {
    listen       443 ssl;
    server_name  mydockerserver.mydomain.tld;

    ssl_certificate /etc/letsencrypt/live/mydockerserver.mydomain.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mydockerserver.mydomain.tld/privkey.pem;

    # static files
    location ^~ /browser {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # main websocket
    location ~ ^/cool/(.*)/ws$ {
        proxy_pass https://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }

    # download, presentation and image upload
    location ~ ^/(c|l)ool {
        proxy_pass https://localhost:9980;
        proxy_set_header Host $http_host;
    }

    # Admin Console websocket
    location ^~ /cool/adminws {
        proxy_pass https://localhost:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
}

So the traffic flow is like this:

cloud.mydomain.tld <-- HTTPS --> mydockerserver.mydomain.tld:443 <-- Reverse Proxy to Docker --> mydockerserver.mydomain.tld:9980

If your Docker container is up and running and you have redirected the traffic to the default SSL port 443, you should check if you can navigate to: https://mydockerserver.mydomain.tld/browser/dist/admin/admin.html and if you can login with the username and password you specified when you started your Docker container. If everything works fine until here, your CODE-side setup is ready to go.

If you do not have a valid SSL certificate, you have disable the certificate checking in the Nextcloud settings.

That's the setup that works for me. Hope this might help you, too.

madscientist159 commented 1 year ago

We started seeing this in a test deployment, moving from OnlyOffice 7.1 to 7.4. It seems to be triggered by the (optional) setting to have OnlyOffice generate file previews, x2t appears to have a bug when converting to jpeg (this is quite easily triggered by calling x2t directly with a docx input and a jpeg output).

A temporary workaround might be to disable that checkbox. I'll probably be filing a bug report once I can track down a few other issues in the test environment.

Full trace, for posterity:

TypeError: Cannot read property 'length' of undefined
    at Object.a.AscCommon.HL.decode.a.AscCommon.HL.decode (<anonymous>:12625:172)
    at e (<anonymous>:12540:526)
    at k.On (<anonymous>:12560:402)
    at Object.On (<anonymous>:12565:207)
    at h.e.v3c (<anonymous>:10605:404)
    at h.v3c (<anonymous>:10939:202)
    at <anonymous>:10551:412
    at hb (<anonymous>:10014:313)
    at Object.a.AscCommon.QDg (<anonymous>:10205:405)
    at h.e.Qka (<anonymous>:10551:375)
Uncaught TypeError: Cannot read property 'length' of undefined

#
# Fatal error in v8::ToLocalChecked
# Empty MaybeLocal.
#

EDIT: After seeing the same crash showing up in the browser, all of this got traced all of this to the fonts / font handling. Moving the old AllFonts file in place allowed the editor to start up, but x2t etc. will need to be recompiled with an appropriate fonts fix before they will function.

EDIT2: :duck: It turns out this is the (extremely unhelpful and nonsensical) error / crash that results from not regenerating the fonts with server/tools/allfontsgen after an update or fresh compilation from source. While the installation instructions mention this step, it's not clear that this also needs to be run after upgrades, and that may be the source of some of the confusion. I was also able to confirm that this is what was blocking OnlyOffice from synchronizing changes back to NextCloud.

github-actions[bot] commented 2 months ago

This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 60 days. Thank you for your contribution!

Retaking repo management include inheritance of old, not treated, and probablty obsolete issues, this is why it was decided to mark issues as stale.

github-actions[bot] commented 1 week ago

This issue has been closed due to inactivity. If you feel this is in error, please reopen the issue or file a new issue with the relevant details.