New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ocamldep loops #7643
Comments
Comment author: ChriChri I confirm: the pb is due to the nested includes on got away when I fixed my generator. |
Comment author: @gasche This issue falls under the general rule: "Weird-looking generated code is not given first-class support within the compiler distribution, fixes for compiler blowup are not prioritized and will only be merged if they preserve readability/maintainability of the compiler codebase". Of course we cannot know whether a readable fix exist without understanding the issue, and the idea that there may exist an algorithmic bug within ocamldep made me curious, so I wrote this reproduction script: generate.ml:let rec generate = function let () = match int_of_string Sys.argv.(1) with
|
Comment author: @Octachron I have played a bit with spacetime on a similar code generator, and the memory profile and allocation rate are flat. Contrarily, for 24 nested include, the |
Comment author: @gasche Well, add_module_binding calls both:
So there is an duplication of calls here which leads to an exponential blowup. |
Comment author: @Octachron A fix is available at #1377 . |
Comment author: ChriChri Yes I don't mind being cited as Christophe Raffalli. |
Comment author: @gasche Florian's fix was merged in trunk (future 4.07). |
Original bug ID: 7643
Reporter: ChriChri
Assigned to: @Octachron
Status: resolved (set by @gasche on 2017-10-19T12:39:07Z)
Resolution: fixed
Priority: normal
Severity: minor
Version: 4.05.0
Target version: 4.06.0 +dev/beta1/beta2/rc1
Fixed in version: 4.07.0+dev/beta2/rc1/rc2
Category: tools (ocaml{lex,yacc,dep,debug,...})
Monitored by: ChriChri
Bug description
ocamldep loops on the attached file (clearly this file is exposing a
pb with my code generator that I am solving, but ocamldep should not loop)
May be it does not loop, but run for too long ... I killed after 1mn
Note: the memory is not growing.
File attachments
The text was updated successfully, but these errors were encountered: