Revise.jl
Revise.jl copied to clipboard
Assertion error when revising
The error I get is
┌ Error: Failed to revise /home/antoine/.julia/dev/DFTK/src/densities.jl
│ exception =
│ AssertionError: ld[idx] < typemax(eltype(ld))
│ Stacktrace:
│ [1] (::Revise.var"#77#79"{OrderedCollections.OrderedDict{Revise.RelocatableExpr, Union{Nothing, Vector{Any}}}, OrderedCollections.OrderedDict{Revise.RelocatableExpr, Union{Nothing, Vector{Any}}}})()
│ @ Revise ~/.julia/packages/Revise/jHTGK/src/packagedef.jl:262
└ @ Revise ~/.julia/packages/Revise/jHTGK/src/packagedef.jl:710
I'm hoping the assertion will be of some use. It's not trivial to me to reproduce it, but I've gotten it a couple of times now; what I can say is that occurs when I'm trying to compare different versions of a function, so something like
module A
#f() = 1
f() = 2
end
then commenting in and out both versions, running the test script, changing things, etc. It seems to occur when I (by mistake) comment in both versions. But of course trying the MWE above doesn't trigger the bug...
If there's some commands I can run to help debugging I can try to do it next time I trigger the bug.
edit: this is julia 1.7, Revise 3.3.1
Perhaps try the debug logging described here: https://timholy.github.io/Revise.jl/stable/debugging/
Thanks, I didn't see this! OK, I've put rlogger = Revise.debug_logger()
in my startup.jl and will post next time I encounter the bug
Well that didn't take long.
Revise.LogRecord(Debug, DeleteMethod, Action, Revise_4ac0f476, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 269, (time=1.64390048138298e9, deltainfo=(Tuple{typeof(DFTK.compute_partial_density!), Any, Any, Any, Any, Any}, MethodSummary(:compute_partial_density!, :DFTK, Symbol("/home/antoine/.julia/dev/DFTK/src/densities.jl"), 21, Tuple{typeof(DFTK.compute_partial_density!), Any, Any, Any, Any, Any}))))
Revise.LogRecord(Debug, Eval, Action, Revise_9147188b, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 318, (time=1.643900481407101e9, deltainfo=(DFTK, :(#= /home/antoine/.julia/dev/DFTK/src/densities.jl:55 =# @views #= /home/antoine/.julia/dev/DFTK/src/densities.jl:55 =# @timing(function compute_density(basis::PlaneWaveBasis, ψ, occupation)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:55 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:56 =#
n_k = length(basis.kpoints)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:57 =#
n_spin = basis.model.n_spin_components
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:60 =#
T = promote_type(eltype(basis), eltype(ψ[1]))
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:61 =#
ρaccus = [similar(ψ[1], T, (basis.fft_size..., n_spin)) for ithread = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:68 =#
kpt_per_thread = [ifelse(i <= n_k, [i], Vector{Int}()) for i = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:69 =#
if n_k >= Threads.nthreads()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:70 =#
kblock = floor(Int, length(basis.kpoints) / Threads.nthreads())
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:71 =#
kpt_per_thread = [collect(1:length(basis.kpoints) - (Threads.nthreads() - 1) * kblock)]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:72 =#
for ithread = 2:Threads.nthreads()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:73 =#
push!(kpt_per_thread, (kpt_per_thread[end])[end] .+ collect(1:kblock))
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:75 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:75 =# @assert (kpt_per_thread[end])[end] == length(basis.kpoints)
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:78 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:78 =# Threads.@threads for (ikpts, ρaccu) = collect(zip(kpt_per_thread, ρaccus))
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:79 =#
ρaccu .= 0
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:80 =#
ρ_k = similar(ψ[1], T, basis.fft_size)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:81 =#
for ik = ikpts
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:82 =#
kpt = basis.kpoints[ik]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:83 =#
compute_partial_density!(ρ_k, basis, kpt, ψ[ik], occupation[ik])
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:85 =#
accumulate_over_symmetries!(ρaccu[:, :, :, kpt.spin], ρ_k, basis, basis.ksymops[ik])
end
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:90 =#
count = sum((length(basis.ksymops[ik]) for ik = 1:length(basis.kpoints))) ÷ n_spin
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:91 =#
count = mpi_sum(count, basis.comm_kpts)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:92 =#
ρ = sum(ρaccus) ./ count
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:93 =#
mpi_sum!(ρ, basis.comm_kpts)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:94 =#
lowpass_for_symmetry!(ρ, basis)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:95 =#
ρ = G_to_r(basis, ρ)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:96 =#
ρ = symmetrize_ρ(basis, ρ)
end)))))
Revise.LogRecord(Debug, Eval, Action, Revise_9147188b, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 318, (time=1.643900481431607e9, deltainfo=(DFTK, quote
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:47 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:47 =# Core.@doc " compute_density(basis::PlaneWaveBasis, ψ::AbstractVector, occupation::AbstractVector)\n\nCompute the density and spin density for a wave function `ψ` discretized on the plane-wave\ngrid `basis`, where the individual k-points are occupied according to `occupation`.\n`ψ` should be one coefficient matrix per ``k``-point. If the `Model` underlying the basis\nis not collinear the spin density is `nothing`.\n" #= /home/antoine/.julia/dev/DFTK/src/densities.jl:55 =# @views(#= /home/antoine/.julia/dev/DFTK/src/densities.jl:55 =# @timing(function compute_density(basis::PlaneWaveBasis, ψ, occupation)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:55 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:56 =#
n_k = length(basis.kpoints)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:57 =#
n_spin = basis.model.n_spin_components
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:60 =#
T = promote_type(eltype(basis), eltype(ψ[1]))
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:61 =#
ρaccus = [similar(ψ[1], T, (basis.fft_size..., n_spin)) for ithread = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:68 =#
kpt_per_thread = [ifelse(i <= n_k, [i], Vector{Int}()) for i = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:69 =#
if n_k >= Threads.nthreads()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:70 =#
kblock = floor(Int, length(basis.kpoints) / Threads.nthreads())
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:71 =#
kpt_per_thread = [collect(1:length(basis.kpoints) - (Threads.nthreads() - 1) * kblock)]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:72 =#
for ithread = 2:Threads.nthreads()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:73 =#
push!(kpt_per_thread, (kpt_per_thread[end])[end] .+ collect(1:kblock))
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:75 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:75 =# @assert (kpt_per_thread[end])[end] == length(basis.kpoints)
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:78 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:78 =# Threads.@threads for (ikpts, ρaccu) = collect(zip(kpt_per_thread, ρaccus))
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:79 =#
ρaccu .= 0
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:80 =#
ρ_k = similar(ψ[1], T, basis.fft_size)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:81 =#
for ik = ikpts
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:82 =#
kpt = basis.kpoints[ik]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:83 =#
compute_partial_density!(ρ_k, basis, kpt, ψ[ik], occupation[ik])
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:85 =#
accumulate_over_symmetries!(ρaccu[:, :, :, kpt.spin], ρ_k, basis, basis.ksymops[ik])
end
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:90 =#
count = sum((length(basis.ksymops[ik]) for ik = 1:length(basis.kpoints))) ÷ n_spin
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:91 =#
count = mpi_sum(count, basis.comm_kpts)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:92 =#
ρ = sum(ρaccus) ./ count
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:93 =#
mpi_sum!(ρ, basis.comm_kpts)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:94 =#
lowpass_for_symmetry!(ρ, basis)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:95 =#
ρ = G_to_r(basis, ρ)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:96 =#
ρ = symmetrize_ρ(basis, ρ)
end)) false
end)))
Revise.LogRecord(Debug, Eval, Action, Revise_9147188b, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 318, (time=1.6439005053575e9, deltainfo=(DFTK, :(function compute_partial_density!(ρ, basis, kpt, ψk, occupation)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:21 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:22 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:22 =# @assert length(occupation) == size(ψk, 2)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:25 =#
ρk_real = [zeros(eltype(basis), basis.fft_size) for it = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:26 =#
ψnk_real = [zeros(complex(eltype(basis)), basis.fft_size) for it = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:27 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:27 =# Threads.@threads for n = 1:size(ψk, 2)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:28 =#
ψnk = #= /home/antoine/.julia/dev/DFTK/src/densities.jl:28 =# @views(ψk[:, n])
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:29 =#
tid = Threads.threadid()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:30 =#
G_to_r!(ψnk_real[tid], basis, kpt, ψnk)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:31 =#
ρk_real[tid] .+= occupation[n] .* abs2.(ψnk_real[tid])
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:33 =#
for it = 2:Threads.nthreads()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:34 =#
ρk_real[1] .+= ρk_real[it]
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:36 =#
ρk_real = ρk_real[1]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:39 =#
all(occupation .> 0) && _check_positive(ρk_real)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:40 =#
_check_total_charge(basis.dvol, ρk_real, sum(occupation))
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:43 =#
r_to_G!(ρ, basis, ρk_real)
end))))
Revise.LogRecord(Debug, Eval, Action, Revise_9147188b, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 318, (time=1.643900505367236e9, deltainfo=(DFTK, quote
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:18 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:18 =# Core.@doc "Compute the partial density at the indicated ``k``-Point and return it (in Fourier space).\n" function compute_partial_density!(ρ, basis, kpt, ψk, occupation)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:21 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:22 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:22 =# @assert length(occupation) == size(ψk, 2)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:25 =#
ρk_real = [zeros(eltype(basis), basis.fft_size) for it = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:26 =#
ψnk_real = [zeros(complex(eltype(basis)), basis.fft_size) for it = 1:Threads.nthreads()]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:27 =#
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:27 =# Threads.@threads for n = 1:size(ψk, 2)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:28 =#
ψnk = #= /home/antoine/.julia/dev/DFTK/src/densities.jl:28 =# @views(ψk[:, n])
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:29 =#
tid = Threads.threadid()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:30 =#
G_to_r!(ψnk_real[tid], basis, kpt, ψnk)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:31 =#
ρk_real[tid] .+= occupation[n] .* abs2.(ψnk_real[tid])
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:33 =#
for it = 2:Threads.nthreads()
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:34 =#
ρk_real[1] .+= ρk_real[it]
end
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:36 =#
ρk_real = ρk_real[1]
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:39 =#
all(occupation .> 0) && _check_positive(ρk_real)
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:40 =#
_check_total_charge(basis.dvol, ρk_real, sum(occupation))
#= /home/antoine/.julia/dev/DFTK/src/densities.jl:43 =#
r_to_G!(ρ, basis, ρk_real)
end false
end)))
Revise.LogRecord(Debug, DeleteMethod, Action, Revise_4ac0f476, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 269, (time=1.643900514384534e9, deltainfo=(Tuple{DFTK.var"#894#897", Any}, MethodSummary(Symbol("#894"), :DFTK, :none, 0, Tuple{DFTK.var"#894#897", Any}))))
Revise.LogRecord(Debug, DeleteMethod, Action, Revise_4ac0f476, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 269, (time=1.643900514384609e9, deltainfo=(Tuple{DFTK.var"#521#threadsfor_fun#898"}, MethodSummary(Symbol("#521#threadsfor_fun"), :DFTK, Symbol("threadingconstructs.jl"), 51, Tuple{DFTK.var"#521#threadsfor_fun#898"}))))
Revise.LogRecord(Debug, DeleteMethod, Action, Revise_4ac0f476, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 269, (time=1.643900514384628e9, deltainfo=(Tuple{DFTK.var"#521#threadsfor_fun#898", Any}, MethodSummary(Symbol("#521#threadsfor_fun"), :DFTK, Symbol("threadingconstructs.jl"), 51, Tuple{DFTK.var"#521#threadsfor_fun#898", Any}))))
Revise.LogRecord(Debug, DeleteMethod, Action, Revise_4ac0f476, "/home/antoine/.julia/packages/Revise/jHTGK/src/packagedef.jl", 269, (time=1.643900514384639e9, deltainfo=(Tuple{DFTK.var"#895#899", Any}, MethodSummary(Symbol("#895"), :DFTK, :none, 0, Tuple{DFTK.var"#895#899", Any}))))
If this still happens sometimes, can you try branch teh/debug_668
?