Hi everyone, I started to use Revise some weeks ago, really awesome to get a faster dev cycle (without julia restarts and re-precompiles all the time)! The problem now is that I always get this warning when working on my module:
┌ Warning: Failed to revise /path/to/some/file.jl: StackOverflowError()
Any ideas why this happens?
Is there a way to find out what exactly is going wrong? The warning message is not very helpful…
Thanks; I tried to follow the Logging by default instructions, so I put this in my startup.jl
:
atreplinit() do repl
try
@eval using Revise
@async Revise.wait_steal_repl_backend()
# Turn on logging
@eval Revise.debug_logger()
catch
@warn "Error activating Revise.jl."
end
end
The warning is not shown, so everything seems to work fine. Is this the correct way to enable logging everything?
When I trigger a revision on my module by modifying a file, I get the StackOverflowError
-warning but the logs
field of the log obtained by Revise.debug_logger()
is empty…
I’ve not seen that before. Is that really the only info it prints? ┌
is generally an indication that more follows. (It’s a “vertical bracket opener.”)
If you can’t figure it out on your own, please file a Revise issue with a minimal working example demonstrating the error.
1 Like
Sorry, didn’t copy the entire message (and I’m actually on Windows right now):
┌ Warning: Failed to revise C:\path\to\some\file.jl: StackOverflowError()
└ @ Revise C:\path\to\.julia\packages\Revise\RW8TD\src\Revise.jl:546
It’s funny, it worked for 2-3 times during the last 1-2 hours, now the error is here again…
Coming up with a MWE will be very hard since it probably has something to do with the structure and/or contents of my modules…?
Then your best bet is to dev Revise
and modify it something like this:
$ git diff src/Revise.jl
diff --git a/src/Revise.jl b/src/Revise.jl
index 49f670b..af69404 100644
--- a/src/Revise.jl
+++ b/src/Revise.jl
@@ -526,7 +526,7 @@ function revise()
push!(mexsnews, handle_deletions(pkgdata, file)[1])
push!(finished, (pkgdata, file))
catch err
- push!(revision_errors, (basedir(pkgdata), file, err))
+ push!(revision_errors, (basedir(pkgdata), file, err, stacktrace(catch_backtrace())))
end
end
# Do the evaluation
@@ -537,13 +537,14 @@ function revise()
eval_new!(mexsnew, fi.modexsigs)
pkgdata.fileinfos[i] = FileInfo(mexsnew, fi)
catch err
- push!(revision_errors, (basedir(pkgdata), file, err))
+ push!(revision_errors, (basedir(pkgdata), file, err, stacktrace(catch_backtrace())))
end
end
empty!(revision_queue)
- for (basedir, file, err) in revision_errors
+ for (basedir, file, err, st) in revision_errors
fullpath = joinpath(basedir, file)
@warn "Failed to revise $fullpath: $err"
+ display(st)
end
tracking_Main_includes[] && queue_includes(Main)
nothing
Then you’ll get the stacktrace that caused the error.
1 Like