Bug 553493 - Missing features in File Access view
Summary: Missing features in File Access view
Status: NEW
Alias: None
Product: Tracecompass.Incubator
Classification: Tools
Component: General (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 normal
Target Milestone: ---   Edit
Assignee: Project inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-11-26 10:14 EST by Matthew Khouzam CLA
Modified: 2020-03-10 13:39 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Matthew Khouzam CLA 2019-11-26 10:14:25 EST
Reported by Mathieu Desnoyers

(10:09:39 AM) Compudj: il manque donc dup*, exec (pour tracker les O_CLOEXEC), fork (copie de fd table), clone (copie ou bien même fd table selon CLONE_FILES), close
(10:10:21 AM) Compudj: il manquerait aussi les syscalls associés aux directory fd je crois
(10:10:30 AM) Compudj: mais moins utile que pour les file FD
(10:10:39 AM) Compudj: et éventuellement les syscalls de création de sockets

Missing: 
Dup*
exec (O_CLOEXEC)
clone and fork (copying the table)
Directory syscalls
Socket syscalls (known that it's missing.)
Comment 1 Matthew Khouzam CLA 2019-11-26 10:21:26 EST
(10:15:50 AM) Compudj: TheMatthew: une précision sur le ticket: pour le cas de clone(flags&CLONE_FILES), c'est pas juste une copie de la fd table, mais bel et bien une fd table _partagée_
(10:16:15 AM) Compudj: e.g. les open/close/etc du parent et du child altèrent la même fd table
(10:17:28 AM) Compudj: ah et il manque fcntl (cmd==F_DUPFD) qui est en fait un dup


Missing: 
clone with CLONE_FILES copies (references) the FD table, so that means it is the same FD.

also look up fcntl (cmd==F_DUPFD)
Comment 2 Matthew Khouzam CLA 2020-03-10 13:39:39 EDT
LTTng details.


(11:17:09 AM) tahini: TheMatthew, les fds c'est per pid, right? donc si plusieurs threads d'un même process ouvrent des fichiers, alors les fds seront assignés pour le pid
(11:19:09 AM) TheMatthew: Un thread a ses propres fds... e.g. chaque thread a stdin/out/err 
(11:20:46 AM) TheMatthew: Hmm par process, je ne suis pas certain.
(11:21:11 AM) TheMatthew: Compudj: as an interested party, you may wish to read the above ^
(11:23:15 AM) tahini: dans l'événement lttng_statedump_file_descriptor, le champ pid réfère bien au pid? pas au tid?
(11:25:17 AM) TheMatthew: https://bugs.eclipse.org/bugs/show_bug.cgi?id=553493
(11:26:26 AM) matthiasb_ left the room (quit: Ping timeout: 480 seconds).
(11:33:47 AM) Compudj: tahini: je pense que c'est un bogue de lttng-modules en fait
(11:33:49 AM) Compudj: pour un cas rare
(11:34:04 AM) Compudj: typiquement, la fd table va être partagée entre les threads d'un process
(11:34:16 AM) Compudj: si les threads sont créés avec le clone flag CLONE_FILES
(11:34:21 AM) Compudj: (ce qui est habituel)
(11:34:35 AM) Compudj: mais rien n'empêcherait de créer un thread à bras avec clone sans CLONE_FILES
(11:35:12 AM) Compudj: je pense que cette subtilité explique pourquoi lsof liste les file descriptors de chaque thread, et non pas juste par process
(11:35:18 AM) Compudj: même s'ils sont typiquement juste répétés
(11:36:10 AM) Compudj: fixer ça dans lttng-modules impliquerait d'itérer sur chaque process/thread, et de dumper les fd pour chaque tid
(11:38:09 AM) tahini: Compudj donc dans lttng c'est bien par process, avec la supposition que la table est partagée entre les threads
(11:39:03 AM) Compudj: oui, ce qui est (rarement) possiblement faux
(11:39:16 AM) Compudj: je vais ouvrir un ticket sur bugs à ce sujet
(11:39:20 AM) tahini: Mais dans les analyses, il faudrait qu'on fasse des cas séparés pour le CLONE FILES et sans CLONE FILES
(11:39:40 AM) tahini: au fait CLONE FILES c'est table de fd partagée ou pas?
(11:39:49 AM) tahini: clone implique copie d'habitude
(11:40:59 AM) tahini: donc je m'attendrais à une table copiée, mais qui évolue séparément avec CLONE FILES
(11:42:24 AM) Compudj: https://bugs.lttng.org/issues/1245
(11:42:50 AM) Compudj:               If CLONE_FILES is set, the calling process and the child process
(11:42:53 AM) Compudj:               share  the same file descriptor table. 
(11:42:55 AM) Compudj: see clone(2)
(11:43:42 AM) tahini: ok... mettons que ça clone la référence à la table fd
(11:43:43 AM) Compudj: et oui, les analyses au niveau modèle devraient gérer le cas CLONE_FILES vs not CLONE_FILES différemment
(11:44:46 AM) Compudj: CLONE_FILES est juste un flag.. sa sémantique dépend de la description de la man page ;)
(11:51:59 AM) tahini: Compudj, de la façon que lttng-modules génère les syscalls, penses-tu que ce serait facile de transformer les champs flags en bit flag enums?
(12:08:25 PM) Compudj: tahini: oui, il suffit d'implémenter un "override" pour ce syscall
(12:08:36 PM) Compudj: ça override le behavior auto-généré
(12:08:51 PM) Compudj: tahini: cependant, mjeanson est très actif dans ce bout de code
(12:09:14 PM) Compudj: mais rien n'empêcherait de gérer les merge conflicts par la suite
(12:12:41 PM) tahini: ok, je trippe peut-être un peu trop sur les enum flags, mais ça aide à lire une trace!
(12:21:56 PM) Compudj: tahini: tu fais bien, c'est une énorme amélioration de usability
(12:22:08 PM) Compudj: tahini: je suis très content que tu proposes ces changements
(12:25:11 PM) Compudj: tahini: je vais regarder le bug 1245 à l'instant
(12:25:21 PM) Compudj: à moins que tu sois dessus
(12:26:27 PM) tahini: non, j'y suis pas, mon problème pour l'instant est plutôt de voir comment présenter l'info aux usagers 
(12:27:33 PM) tahini: lttng-analyses est une bonne inspiration, mais Trace Compass doit profiter de son interactivité