odoc crashes when processing comments enriched with ocaml-rpc ppx
Open
@aantron is already working on this.
Since Dec 5, 2019.
bug
parser
- Dominant language
- OCaml
- Stars
- 355
- Forks
- 114
- Avg merge
- 6d 21h
- Merged PRs (30d)
- 10
Description
I'm trying to generate docs for all the xs-opam packages using odig but odoc spectacularly crashes when processing rpc-enhanced comments in xapi-idl, xapi-storage, and xapi-xenopsd.
Example:
$ odig doc
Updating documentation, this may take some time...
[FAILED][spawn:22191]
Illegal exit status: exited [2] expected: 0
cmd: ['/home/paus/.local/share/opam/toolstack/bin/odoc' 'compile' '--pkg' 'xapi-idl' '-o' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/varstore/privileged/varstore_privileged_interface.odoc' '/home/paus/.local/share/opam/toolstack/lib/xapi-idl/varstore/privileged/varstore_privileged_interface.cmt' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/result/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rpclib/core/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rresult/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/uuidm/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/']
env:
relevant-env:
cwd: '/home/paus/code/toolstack/xcp-idl'
success-exits: 0
stdin: <none>
stdout: <ui>
stderr: <ui>
stdo-ui: odoc: internal error, uncaught exception:
File "src/loader/doc_attr.ml", line 71, characters 29-35: Assertion failed
Raised at file "src/loader/doc_attr.ml", line 71, characters 29-41
Called from file "src/loader/doc_attr.ml", line 80, characters 4-32
Called from file "src/loader/cmti.ml", line 255, characters 12-59
Called from file "src/loader/cmti.ml", line 269, characters 20-57
Called from file "list.ml", line 117, characters 24-34
Called from file "src/loader/cmti.ml", line 264, characters 4-383
Called from file "src/loader/cmt.ml", line 515, characters 25-62
Called from file "list.ml", line 117, characters 24-34
Called from file "src/loader/cmt.ml", line 513, characters 4-136
Called from file "src/loader/cmt.ml", line 359, characters 38-69
Called from file "src/loader/cmt.ml", line 376, characters 16-70
Called from file "src/loader/cmt.ml", line 409, characters 22-70
Called from file "src/loader/cmt.ml", line 469, characters 27-60
Called from file "src/loader/cmt.ml", line 515, characters 25-62
Called from file "list.ml", line 117, characters 24-34
Called from file "src/loader/cmt.ml", line 513, characters 4-136
Called from file "src/loader/cmt.ml", line 522, characters 14-46
Called from file "src/loader/odoc_loader.ml", line 137, characters 31-69
Called from file "src/model/error.ml", line 65, characters 9-15
Called from file "src/odoc/compile.ml", line 23, characters 8-36
Called from file "cmdliner_term.ml", line 25, characters 19-24
Called from file "cmdliner.ml", line 117, characters 32-39
result: exited [2]
writes: {'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/varstore/privileged/varstore_privileged_interface.odoc'}
reads: {'/home/paus/.local/share/opam/toolstack/lib/xapi-idl/varstore/privileged/varstore_privileged_interface.cmt'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/camlinternalFormatBasics.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rpclib/core/idl.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/result/result.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rpclib/core/rpc.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rresult/rresult.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__arg.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__bigarray.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__buffer.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__complex.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__format.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__int32.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__int64.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__nativeint.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__printexc.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__printf.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__random.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__seq.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__string.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/stdlib__uchar.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/syslog.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/unix.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/uuidm/uuidm.odoc'
'/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/xcp_service.odoc'}
created: 23.7s (23646028022ns)
start: 23.7s (23665400912ns)
duration: 12.8ms (12715397ns)
hash: adfb5b3ffdfe71a6
kind: spawn
[ABORTED][spawn:22197] ['/home/paus/.local/share/opam/toolstack/bin/odoc' 'compile' '--pkg' 'xapi-idl' '-o' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/varstore/privileged/varstore_privileged_client.odoc' '/home/paus/.local/share/opam/toolstack/lib/xapi-idl/varstore/privileged/varstore_privileged_client.cmt' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/base/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/base/caml/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/base/shadow_stdlib/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/cohttp/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/fieldslib/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/message-switch-core/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/message-switch-unix/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ocaml/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/ppx_sexp_conv/runtime-lib/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/re/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/result/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rpclib/core/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rpclib/json/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rpclib/xml/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/rresult/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/sexplib0/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/uri/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/uuidm/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-backtrace/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-idl/varstore/privileged/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xapi-stdext-pervasives/' '-I' '/home/paus/.local/share/opam/toolstack/var/cache/odig/odoc/xmlm/']
I've noticed that the code where odoc crashes is similar to code existing in ppx/common but I'm still very unfamiliar with preprocessors and comments.
The crash happens on a branched marked as todo: https://github.com/ocaml/odoc/blob/master/src/loader/doc_attr.ml#L71
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.