Bugs dans l'accès aux sources de captures sous Linux

Bonjour,

Je suis enseignant en collège et je viens de découvrir votre application. Je suis vraiment intéressé pour l’utiliser dans le cadre de mes activités : elle correspond parfaitement à une solution de création de projets collaboratifs que nous cherchions depuis longtemps.

Je suis actuellement sur une machine tournant sous EndeavourOS (arch linux en fait). J’ai téléchargé le fichier do•doc-9.1.2.AppImage et donné les droits pour l’exécuter.

Message d’erreur au lancement de Do-Doc

Do-doc se lance correctement. Cependant, j’ai des erreurs d’accès semble-t-il : Error: EROFS. Voici le log après le lancement de l’application dans un terminal :

[sylcha@blackbeard applications]$ ./do•doc-9.1.2.AppImage
INDEX / didn’t find override settings
[12:19:03] Sockets module initialized at 20230208_121903
App is electron : true
Starting app dodoc
{
  node: '12.18.3',
  v8: '8.7.220.25-electron.0',
  uv: '1.38.0',
  zlib: '1.2.11',
  brotli: '1.0.7',
  ares: '1.16.0',
  modules: '85',
  nghttp2: '1.41.0',
  napi: '6',
  llhttp: '2.0.4',
  http_parser: '2.9.3',
  openssl: '1.1.1',
  icu: '67.1',
  unicode: '13.0',
  electron: '11.0.3',
  chrome: '87.0.4280.67'
}
Init module with debug = false and verbose = false
Not logging to a file
ELECTRON — init : ready
ELECTRON — createWindow
ELECTRON — init : ready / window created
[12:19:04] ——— Starting app version 9.1.2
[12:19:04] Emptying temp folder /home/sylcha/.cache/dodoc_cache
[12:19:04] Content folder dodoc2 already exists in /home/sylcha/Documents
[12:19:04] -> not creating a new one
[12:19:04] Will store contents in: /home/sylcha/Documents/dodoc2
[12:19:04] main.js - Found available port: 8080
[12:19:05] Initializing socket module
[12:19:05] server-realtime_text_collaboration • init
[12:19:05] server-realtime_text_collaboration • ws init
[12:19:05] MAIN — opening URL in electron : https://localhost:8080
[12:19:05] Server up and running. Go to https://localhost:8080
[12:19:05]
[12:19:05] ••• the following page has been requested: https://localhost:8080/ •••
[12:19:05] ••• the following page has been requested: https://localhost:8080/ •••
[12:19:07] CONNECTION ALLOWED
[12:19:07] RECEIVED CONNECTION FROM SOCKET.id: 0lhBdZYDXS7OP-b2AAAA
[12:19:07] Clients connected currently : 1
(node:39871) UnhandledPromiseRejectionWarning: Error: EROFS: read-only file system, open '/tmp/.mount_do•dkfXBtA/resources/app/access.csv'
(node:39871) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:39871) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
ELECTRON — createWindow : ready-to-show
[12:19:07] RECEIVED EVENT: updateClientInfo
[12:19:07] RECEIVED EVENT: authenticate
[12:19:07] % PERFORMANCE — setAuthenticate : 0s 187.845368ms
[12:19:07] RECEIVED EVENT: listFolders
[12:19:07] % PERFORMANCE — listFolders for type = authors : 0s 0.979878ms
[12:19:07] RECEIVED EVENT: listFolders
[12:19:07] RECEIVED EVENT: listFolders
[12:19:07] RECEIVED EVENT: listFolders
[12:19:07] RECEIVED EVENT: updateNetworkInfos
[12:19:07] % PERFORMANCE — listFolders for type = chats : 0s 12.03984ms
[12:19:07] RECEIVED EVENT: updateClientInfo
[12:19:07] % PERFORMANCE — listFolders for type = publications : 0s 16.257724ms
[12:19:07] % PERFORMANCE — listFolders for type = projects : 0s 20.766865ms
[12:19:07] RECEIVED EVENT: listFolders
[12:19:07] % PERFORMANCE — listFolders for type = authors : 0s 1.818599ms

Je peux malgré tout créer un projet sans souci et celui-ci est sauvegardé d’une sessions à l’autre.

Cependant, dans votre documentation, vous parlez d’un dossier d’exploitation /Documents/dodoc2 et celui-ci n’est pas créé sur ma machine.
:point_right:t3: Edit : après contrôle, j’ai effectivement ce dossier… et tous les éléments sont dedans !

Accès aux sources de capture

Lorsque je souhaite faire une capture, je ne peux accéder à aucune des sources proposées. J’ai ce message d’erreur apparaissant dans l’application :

notifications.couldnt_load_getusermedia
NotFoundError: Requested device not found

Le flux vidéo ou audio n’a pas pu être démarré.
Essayez de modifier la source ou la résolution dans les réglages.
TypeError

:interrobang: Je branche alors un micro sur un port USB et toutes les sources deviennent alors accessibles !

Je tente une capture audio. Dans l’application, tout se déroule comme prévu mais en console, j’ai un message d’erreur :

Got field with name = audio-20230208_123214-84d.wav and value = {"fileCreationDate":"2023-02-08T11:32:14.315Z","fav":false,"authors":[{"slugFolderName":"admin"}]}.
Got field with name = socketid and value = 0lhBdZYDXS7OP-b2AAAA.
[12:32:14] ERROR! Failed to edit folder: Error: Error: socket_is_not_logged_in
(node:39871) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined
    at /tmp/.mount_do•dkfXBtA/resources/app/core/sockets.js:252:30
    at async onEditFolder (/tmp/.mount_do•dkfXBtA/resources/app/core/sockets.js:246:9)
(node:39871) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)
(node:39871) UnhandledPromiseRejectionWarning: Error: EROFS: read-only file system, open '/tmp/.mount_do•dkfXBtA/resources/app/changelog.csv'
(node:39871) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
[12:32:16] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/audio-20230208-123214-84d.wav.wf.png.180.jpeg and resolution = 180, about to create it
[12:32:16] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/audio-20230208-123214-84d.wav.wf.png.360.jpeg and resolution = 360, about to create it
[12:32:16] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/audio-20230208-123214-84d.wav.wf.png.1600.jpeg and resolution = 1600, about to create it

Même type d’erreur lorsque je tente de prendre un photo (via caméra intégrée) :

Got field with name = image-20230208_123434-ooj.jpeg and value = {"fileCreationDate":"2023-02-08T11:34:34.503Z","fav":false,"authors":[{"slugFolderName":"admin"}]}.
Got field with name = socketid and value = 0lhBdZYDXS7OP-b2AAAA.
[12:34:34] ERROR! Failed to edit folder: Error: Error: socket_is_not_logged_in
(node:39871) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined
    at /tmp/.mount_do•dkfXBtA/resources/app/core/sockets.js:252:30
    at async onEditFolder (/tmp/.mount_do•dkfXBtA/resources/app/core/sockets.js:246:9)
(node:39871) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 6)
(node:39871) UnhandledPromiseRejectionWarning: Error: EROFS: read-only file system, open '/tmp/.mount_do•dkfXBtA/resources/app/changelog.csv'
(node:39871) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 7)
[12:34:34] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/image-20230208-123434-ooj.jpeg.180.jpeg and resolution = 180, about to create it
[12:34:34] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/image-20230208-123434-ooj.jpeg.360.jpeg and resolution = 360, about to create it
[12:34:34] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/image-20230208-123434-ooj.jpeg.1600.jpeg and resolution = 1600, about to create it

:interrobang: Si je retire le micro USB, à nouveau, aucune source n’est disponible…

Pour ce qui est de l’utilisation d’une autre machine (smartphone avec accès par QR-Code), sur le smartphone, tout fonctionne comme il faut mais lorsque par exemple j’intègre une photo à mon projet, j’ai toujours ce même message d’erreur dans le terminal :

[12:52:52] ERROR! Failed to edit folder: Error: Error: socket_is_not_logged_in
(node:39871) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined
    at /tmp/.mount_do•dkfXBtA/resources/app/core/sockets.js:252:30
    at async onEditFolder (/tmp/.mount_do•dkfXBtA/resources/app/core/sockets.js:246:9)
(node:39871) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 13)
(node:39871) UnhandledPromiseRejectionWarning: Error: EROFS: read-only file system, open '/tmp/.mount_do•dkfXBtA/resources/app/changelog.csv'
(node:39871) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 14)
[12:52:52] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/image-20230208-125251-9f8.jpeg.180.jpeg and resolution = 180, about to create it
[12:52:52] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/image-20230208-125251-9f8.jpeg.360.jpeg and resolution = 360, about to create it
[12:52:52] Missing thumb for /home/sylcha/Documents/dodoc2/_thumbs/test2/image-20230208-125251-9f8.jpeg.1600.jpeg and resolution = 1600, about to create it

La photo est bien enregistrée malgré tout dans le projet.

Conclusion

Do-doc semble fonctionnel a priori (puisque je peux créer un projet, capturer dans certaines conditions) mais son comportement ne semble pas dans les clous de ce qui est prévu et génère nombres erreurs.

Si vous avez des suggestions pour régler ces deux problèmes :

  • accès disque
  • accès sources de captures

Merci pour votre travail remarquable par ailleurs !
Cordialement,
S. CHAMBON

Bonjour et merci pour vos retours détaillés !

Pouvez-vous tester dodoc 9.3.5-dev ?

C’est une version « de développement » mais qui contient beaucoup de résolutions de bugs par rapport à la version 9.1.2.

Si vous rencontrez malgré tous ces bugs alors il nous faudra creuser un peu plus :slight_smile:

Merci pour votre réponse rapide.

Ce qui a changé

Je n’ai plus les bugs concernant les sources de contenus présentes sur machine (là où je devais ajouter un périphérique en USB pour voir les autres…)

Ce qui n’a pas changé

Les messages d’erreurs de type Error: EROFS dans le terminal à l’ouverture et lors des enregistrements des contenus.

À l’ouverture :

[sylcha@blackbeard applications]$ ./do•doc-9.3.5-dev.AppImage
INDEX / didn’t find override settings
[15:39:54] Sockets module initialized at 20230208_153954
App is electron : true
Starting app dodoc
{
  node: '16.13.0',
  v8: '9.8.177.11-electron.0',
  uv: '1.42.0',
  zlib: '1.2.11',
  brotli: '1.0.9',
  ares: '1.17.2',
  modules: '101',
  nghttp2: '1.45.1',
  napi: '8',
  llhttp: '6.0.4',
  openssl: '1.1.1',
  icu: '70.1',
  unicode: '14.0',
  electron: '17.1.1',
  chrome: '98.0.4758.109'
}
Init module with debug = false and verbose = false
Not logging to a file
ELECTRON — init : ready
ELECTRON — createWindow
[44908:0208/153954.843105:ERROR:sandbox_linux.cc(377)] InitializeSandbox() called with multiple threads in process gpu-process.
[15:39:54] ——— Starting app version 9.3.5-dev
[15:39:54] Emptying temp folder /home/sylcha/.cache/dodoc_cache
[15:39:55] Content folder dodoc2 already exists in /home/sylcha/Documents
[15:39:55] -> not creating a new one
[15:39:55] Will store contents in: /home/sylcha/Documents/dodoc2
[15:39:55] main.js - Found available port: 8080
[15:39:55] Initializing socket module
[15:39:55] server-realtime_text_collaboration • init
[15:39:55] server-realtime_text_collaboration • ws init
[15:39:55] MAIN — opening URL in electron : https://localhost:8080
[15:39:55] Server up and running. Go to https://localhost:8080
[15:39:55]
[44873:0208/153955.240978:ERROR:cert_verify_proc_builtin.cc(681)] CertVerifyProcBuiltin for localhost failed:
----- Certificate i=0 (emailAddress=sdere@sqrinfotech.com,CN=www.private.com,OU=Private,O=Private,L=NY,ST=NY,C=US) -----
ERROR: No matching issuer found


[15:39:55] ••• the following page has been requested: https://localhost:8080/ •••
[15:39:55] ••• the following page has been requested: https://localhost:8080/ •••
[15:39:56] CONNECTION ALLOWED
[15:39:56] RECEIVED CONNECTION FROM SOCKET.id: ZwrVHItwf5qeT9tyAAAA
[15:39:56] Clients connected currently : 1
(node:44873) UnhandledPromiseRejectionWarning: Error: EROFS: read-only file system, open '/tmp/.mount_do•dYwWZp6/resources/app/access.csv'
(Use `dodoc --trace-warnings ...` to show where the warning was created)
(node:44873) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)

Lors de l’enregistrement d’une photo :

Got field with name = image-20230208_154122-3m0.jpeg and value = {"fileCreationDate":"2023-02-08T14:41:22.359Z","fav":false,"authors":[{"slugFolderName":"sylcha"}]}.
Got field with name = socketid and value = ZwrVHItwf5qeT9tyAAAA.
[15:41:22] ERROR! Failed to edit folder: Error: Error: socket_is_not_logged_in
(node:44873) UnhandledPromiseRejectionWarning: Error: EROFS: read-only file system, open '/tmp/.mount_do•dYwWZp6/resources/app/changelog.csv'
(node:44873) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)

Il semble que dodoc n’ai pas les droits pour créer/modifier un fichier changelog.csv qui permet de conserver une trace des modifications réalisés (création de projet, importation de médias, etc.) à l’intérieur de l’app elle-même – ce qui n’est pas une bonne idée, j’aurai du indiquer un emplacement hors de l’app comme le dossier /dodoc2…

Bref, aucun soucis pour l’utilisation de dodoc, sauf si ce message gêne ? Il fait planter dodoc ?

Je n’ai pas constaté de dysfonctionnement de l’application mais je ne l’ai pour le moment qu’utilisé pour des tests personnels et non en situation avec des élèves. Mais je suis comme vous confiant au bon fonctionnement de do-doc en mode « production » . Il me tarde vraiment de l’utiliser !

Par contre, en tant que prof de maths, je me suis jeté sur le bouton formule de l’éditeur de texte et il semble mal fonctionner. Je saisis x^2 et en cliquant sur Enregistrer, j’ai dans mon texte x^2x2.
Ne serait-il pas plus adapté d’utiliser LaTeX comme standard ici ? Et plus généralement, un mode Expert dans l’éditeur autorisant le markdown ?
Mais c’est un autre sujet que je peux poster dans un autre fil…

Bonjour @sylcha

@louis a ajouté cette fonctionnalité à la demande d’un professeur de maths @matthieu. Le but inavoué étant d’attraper les profs de maths :wink:

Les formules fonctionnent très bien sur une installation serveur de dodoc (par exemple ici : https://test.dodoc.fr/) mais pas sur une installation sur un poste.

Voir ce fil sur Github :

Oui c’était l’idée pour la V10 de do•doc
voir cet autre fil sur ce sujet :