Skip to content
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

Strange type parameterization issue introduced around 30 June (or perhaps 16 June) #12063

Closed
sbromberger opened this issue Jul 8, 2015 · 61 comments
Assignees
Labels
domain:types and dispatch Types, subtyping and method dispatch

Comments

@sbromberger
Copy link
Contributor

My LightGraphs.jl code started failing tests around 6/30. Before that date, it was working. The problem is in this code:

type MinCutVisitor{T} <: AbstractMASVisitor
  graph::SimpleGraph
  parities::AbstractArray{Bool,1}
  colormap::Vector{Int}
  bestweight::T
  cutweight::T
  visited::Integer
  distmx::AbstractArray{T, 2}
  vertices::Vector{Int}
end

function MinCutVisitor{T}(graph::SimpleGraph, distmx::AbstractArray{T, 2})
  n = nv(graph)
  MinCutVisitor(
    graph,
    falses(n),
    zeros(Int,n),
    typemax(T),
    zero(T),
    zero(Int),
    distmx,
    @compat(Vector{Int}())
)
end
...
function mincut{T}(
  graph::SimpleGraph,
  distmx::AbstractArray{T, 2}
 )

  visitor = MinCutVisitor(graph, distmx)     # <------ failure is here
  colormap = zeros(Int, nv(graph))

  traverse_graph(graph, T, MaximumAdjacency(), 1, visitor, colormap)

  return( visitor.parities, visitor.bestweight)
end

with this test:

g = Graph(8)

# Original example by Stoer

wedges = [
    (1, 2, 2.),
    (1, 5, 3.),
    (2, 3, 3.),
    (2, 5, 2.),
    (2, 6, 2.),
    (3, 4, 4.),
    (3, 7, 2.),
    (4, 7, 2.),
    (4, 8, 2.),
    (5, 6, 3.),
    (6, 7, 1.),
    (7, 8, 3.) ]


m = length(wedges)
eweights = spzeros(nv(g),nv(g))

for (s, d, w) in wedges
    add_edge!(g, s, d)
    eweights[s, d] = w
    eweights[d, s] = w
end
...
parity, bestcut = mincut(g, eweights)  # <------ failure is here

with this error:

ERROR: LoadError: LoadError: MethodError: `convert` has no method matching convert(::Type{LightGraphs.MinCutVisitor{T}}, ::LightGraphs.Graph, ::BitArray{1}, ::Array{Int64,1}, ::Float64, ::Float64, ::Int64, ::Base.SparseMatrix.SparseMatrixCSC{Float64,Int64}, ::Array{Int64,1})
This may have arisen from a call to the constructor LightGraphs.MinCutVisitor{T}(...),
since type constructors fall back to convert methods.
Closest candidates are:
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.DiGraph,LightGraphs.Graph}, ::AbstractArray{Bool,1}, ::Array{Int64,1}, ::T, ::T, ::Integer, ::AbstractArray{T,2}, ::Array{Int64,1})
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.DiGraph,LightGraphs.Graph}, ::AbstractArray{T,2})
  call{T}(::Type{T}, ::Any)

Now, the strange part: if I change the outer constructor in one of two ways, the tests pass:

  1. if I explicitly call the inner constructor with {T}, it works
  2. if I get rid of the {T} parameterization in the outer constructor definition (and change AbstractArray{T,2} to AbstractArray), it works.

The first one is confusing because I don't know why I'd have to pass the type to the inner constructor.

The second one is particularly confusing since I reference T in the code of the outer constructor. Yet the tests pass.

Even more confusing: if the distmx is a sparse array of Integers (instead of Floats as in the test), it works without any modification.

In any case, more details are here: https://groups.google.com/d/msg/julia-users/uAntZ-eJ7kY/Heqq32Lhr3EJ

@sbromberger
Copy link
Contributor Author

More data showing the failure with floats but not with ints:

julia> LightGraphs.MinCutVisitor(g,spzeros(Float64,8,8))
ERROR: MethodError: `convert` has no method matching convert(::Type{LightGraphs.MinCutVisitor{T}}, ::LightGraphs.Graph, ::BitArray{1}, ::Array{Int64,1}, ::Float64, ::Float64, ::Int64, ::Base.SparseMatrix.SparseMatrixCSC{Float64,Int64}, ::Array{Int64,1})
This may have arisen from a call to the constructor LightGraphs.MinCutVisitor{T}(...),
since type constructors fall back to convert methods.
Closest candidates are:
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.Graph,LightGraphs.DiGraph}, ::AbstractArray{Bool,1}, ::Array{Int64,1}, ::T, ::T, ::Integer, ::AbstractArray{T,2}, ::Array{Int64,1})
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.Graph,LightGraphs.DiGraph}, ::AbstractArray{T,2})
  call{T}(::Type{T}, ::Any)
  ...
 in call at /Users/seth/.julia/v0.4/LightGraphs/src/maxadjvisit.jl:99


julia> LightGraphs.MinCutVisitor(g,spzeros(Int,8,8))
LightGraphs.MinCutVisitor{Int64}({8, 0} undirected graph,Bool[false,false,false,false,false,false,false,false],[0,0,0,0,0,0,0,0],9223372036854775807,0,0,8x8 sparse matrix with 0 Int64 entries:,Int64[])

@rened
Copy link
Member

rened commented Jul 8, 2015

perhaps related to / the same as #11587?

@vtjnash
Copy link
Sponsor Member

vtjnash commented Jul 8, 2015

maybe the inliner is having trouble correctly uniquing the T sparam? does it help if you use a variable other than T for one of the type-parameters / sparams?

@sbromberger
Copy link
Contributor Author

I tried S instead of T without any effect - same error. I'll try a git bisect.

@sbromberger
Copy link
Contributor Author

fecadcb

fecadcbd2c8fcf914a391da160dd2560981bc2f4 is the first bad commit
commit fecadcbd2c8fcf914a391da160dd2560981bc2f4
Author: Jeff Bezanson <jeff.bezanson@gmail.com>
Date:   Tue Jun 16 13:23:46 2015 -0400

    fix order of type cache insertion and UID assignment

    reinstates and hopefully fixes the problem in #11606

:040000 040000 b241a825bacfb026a114a0b41fc6bde8df5eaf90 404b49068cb7010c2c8fe8eae9aad049e8c3cf85 M  src
:040000 040000 a5be542ea69fbc8efd652e56b3c1b634dbf20eca 02089ac8ff5557630898c7188c8d1c8734ec8059 M  test

@sbromberger
Copy link
Contributor Author

cc @JeffBezanson for advice :)

Also ref #11606 from the commit msg.

@yuyichao
Copy link
Contributor

yuyichao commented Jul 8, 2015

How exactly do you run the tests. I've just run the LightGraphs tests with no errors (two deprecation warnings)

In general, it's better if you could provide a full script to reproduce your error (rather than pieces of it). Would be even better if you can reduce you test cases.

@sbromberger
Copy link
Contributor Author

Pkg.test("LightGraphs") will do it. You'll see the error when it gets to running .../.julia/v0.4/LightGraphs/test/maxadjvisit.jl ...

The full test script is in test/maxadjvisit.jl and the line that's causing the error is in the first comment of this issue. A reduced case is available in the google thread. I didn't want to copy everything over, but here it is:

g = DiGraph(8)
LightGraphs.MinCutVisitor(g,spzeros(Float64,8,8))

@yuyichao
Copy link
Contributor

yuyichao commented Jul 8, 2015

Pkg.test("LightGraphs") will do it.

Yeah. No errors.

@sbromberger
Copy link
Contributor Author

@yuyichao On what version?

@yuyichao
Copy link
Contributor

yuyichao commented Jul 8, 2015

julia> versioninfo()
Julia Version 0.4.0-dev+5841
Commit f428392* (2015-07-07 14:58 UTC)
Platform Info:
  System: Linux (x86_64-unknown-linux-gnu)
  CPU: Intel(R) Core(TM) i7-4702HQ CPU @ 2.20GHz
  WORD_SIZE: 64
  BLAS: libopenblas (DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas
  LIBM: libm
  LLVM: libLLVM-3.6.1

@sbromberger
Copy link
Contributor Author

It's definitely happening here (see pkg.julialang.org for confirmation, and I can confirm it as well):

Julia Version 0.4.0-dev+5846
Commit 0503f2a (2015-07-08 02:04 UTC)
Platform Info:
  System: Linux (x86_64-unknown-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Nehalem)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.3

Also here:

julia> using LightGraphs

julia> g = DiGraph(8)
{8, 0} directed graph

julia> LightGraphs.MinCutVisitor(g,spzeros(Float64,8,8))
ERROR: MethodError: `convert` has no method matching convert(::Type{LightGraphs.MinCutVisitor{T}}, ::LightGraphs.DiGraph, ::BitArray{1}, ::Array{Int64,1}, ::Float64, ::Float64, ::Int64, ::Base.SparseMatrix.SparseMatrixCSC{Float64,Int64}, ::Array{Int64,1})
This may have arisen from a call to the constructor LightGraphs.MinCutVisitor{T}(...),
since type constructors fall back to convert methods.
Closest candidates are:
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.DiGraph,LightGraphs.Graph}, ::AbstractArray{Bool,1}, ::Array{Int64,1}, ::T, ::T, ::Integer, ::AbstractArray{T,2}, ::Array{Int64,1})
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.DiGraph,LightGraphs.Graph}, ::AbstractArray{T,2})
  call{T}(::Type{T}, ::Any)
  ...
 in call at /Users/seth/.julia/v0.4/LightGraphs/src/maxadjvisit.jl:100

julia> versioninfo()
Julia Version 0.4.0-dev+5413
Commit fecadcb (2015-06-16 17:23 UTC)
Platform Info:
  System: Darwin (x86_64-apple-darwin14.4.0)
  CPU: Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.3

@sbromberger sbromberger changed the title Strange type parameterization issue introduced around 30 June Strange type parameterization issue introduced around 30 June (or perhaps 16 June) Jul 8, 2015
@sbromberger
Copy link
Contributor Author

Just compiled the latest, same issue:

julia> LightGraphs.MinCutVisitor(g,spzeros(Float64,8,8))
ERROR: MethodError: `convert` has no method matching convert(::Type{LightGraphs.MinCutVisitor{T}}, ::LightGraphs.DiGraph, ::BitArray{1}, ::Array{Int64,1}, ::Float64, ::Float64, ::Int64, ::Base.SparseMatrix.SparseMatrixCSC{Float64,Int64}, ::Array{Int64,1})
This may have arisen from a call to the constructor LightGraphs.MinCutVisitor{T}(...),
since type constructors fall back to convert methods.
Closest candidates are:
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.DiGraph,LightGraphs.Graph}, ::AbstractArray{Bool,1}, ::Array{Int64,1}, ::T, ::T, ::Integer, ::AbstractArray{T,2}, ::Array{Int64,1})
  LightGraphs.MinCutVisitor{T}(::Union{LightGraphs.DiGraph,LightGraphs.Graph}, ::AbstractArray{T,2})
  call{T}(::Type{T}, ::Any)
  ...
 in call at /Users/seth/.julia/v0.4/LightGraphs/src/maxadjvisit.jl:100

julia> versioninfo()
Julia Version 0.4.0-dev+5860
Commit 7fa43ed (2015-07-08 20:57 UTC)
Platform Info:
  System: Darwin (x86_64-apple-darwin14.4.0)
  CPU: Intel(R) Core(TM) i7-5557U CPU @ 3.10GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.3

@sbromberger
Copy link
Contributor Author

Appears to be an issue with sparse matrices? because

julia> LightGraphs.MinCutVisitor(g,zeros(Float64,8,8))  # note zeros() instead of spzeros()
LightGraphs.MinCutVisitor{Float64}({8, 0} directed graph,Bool[false,false,false,false,false,false,false,false],[0,0,0,0,0,0,0,0],Inf,0.0,0,8x8 Array{Float64,2}:
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
 0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0,Int64[])

works.

@sbromberger
Copy link
Contributor Author

also cc @IainNZ since this originally came from pkg.julialang.org's test results :)

@IainNZ
Copy link
Member

IainNZ commented Jul 9, 2015

I reproduced this with LightGraphs v0.1.15 on OSX build Version 0.4.0-dev+5824 (2015-07-07 03:33 UTC), Commit eb58c97* (1 day old master).

@yuyichao
Copy link
Contributor

yuyichao commented Jul 9, 2015

So somehow this is OSX only?

@IainNZ
Copy link
Member

IainNZ commented Jul 9, 2015

Nope, it happened on the Ubuntu VM that PkgEval runs in (which is on an Arch host, as if that'd matter). So its definitely reproducible and platform independent (to an extent).

@IainNZ
Copy link
Member

IainNZ commented Jul 9, 2015

One commonality between the PkgEval machine/env and my machine is that they are not source builds by me, they're coming from the magical buildbots (PkgEval is generic linux binaries, I'm using whatever homebrew gives out).

@yuyichao
Copy link
Contributor

yuyichao commented Jul 9, 2015

Inspired by #12059 and @vtjnash 's #12063 (comment) can you try if --inline=no makes a difference

@sbromberger
Copy link
Contributor Author

running julia with --inline=no did not make a difference. Same error.

@sbromberger
Copy link
Contributor Author

@IainNZ my two julia instances are source builds. Version 0.4.0-dev+5860 (2015-07-08 20:57 UTC) Commit 7fa43ed (0 days old master) - which fails, and Version 0.4.0-dev+5008 (2015-05-26 16:08 UTC) Commit 0855ec9 (43 days old master), which works, were both built from source.

@sbromberger
Copy link
Contributor Author

In the event this turns out to be a local code issue, the changes to the files in question around that date are here: sbromberger/LightGraphs.jl@a2eee8a

@sbromberger
Copy link
Contributor Author

@yuyichao could the difference in llvm versions be causing a problem here?

@yuyichao
Copy link
Contributor

I was hoping that it shouldn't but I can give it a try... (just didn't want to spend an hour compiling llvm if someone else could figure out the issue otherwise ;P )

@sbromberger
Copy link
Contributor Author

@yuyichao if you wouldn't mind trying it and posting your results, I'd be grateful. Thanks.

@yuyichao
Copy link
Contributor

Hmm. Somehow I couldn't reproduce with

Julia Version 0.4.0-dev+5860
Commit 7fa43ed* (2015-07-08 20:57 UTC)

but I can now reproduce it with the latest master...

Julia Version 0.4.0-dev+5923
Commit f5c46f8* (2015-07-11 04:03 UTC)

@yuyichao
Copy link
Contributor

Reduced the repro to

type M{T}
    graph
    parities::AbstractArray{Bool,1}
    colormap::Vector{Int}
    bestweight::T
    cutweight::T
    visited::Integer
    distmx::AbstractArray{T, 2}
    vertices::Vector{Int}
end

function f(n, g, eweights)
    parities = falses(n)
    M(g,
      parities,
      zeros(Int, n),
      typemax(Float64),
      zero(Float64),
      zero(Int),
      eweights,
      Int[])
end

n = 8
g = []

eweights = spzeros(n, n)
f(n, g, eweights)

Independent of LightGraphs.jl

This works for me on 7fa43ed but not on f5c46f8

@sbromberger
Copy link
Contributor Author

@yuyichao that fails for me in 0-day old master, but works in my 45-day old master (consistent with previous tests).

@yuyichao
Copy link
Contributor

Yeah. Just tries to get rid of call since there's too many methods.

@sbromberger Can you check if the version I said is working for me also works for you? #12063 (comment)

Might help to bisect (if Jeff is not faster).

Probably cc. @JeffBezanson .

@yuyichao yuyichao added the domain:types and dispatch Types, subtyping and method dispatch label Jul 11, 2015
@sbromberger
Copy link
Contributor Author

@yuyichao I know it fails with Julia Version 0.4.0-dev+5923 Commit f5c46f8* (2015-07-11 04:03 UTC) - let me build Julia Version 0.4.0-dev+5860 Commit 7fa43ed* (2015-07-08 20:57 UTC).

@sbromberger
Copy link
Contributor Author

Just to be clear - I don't have to make clean or anything after I switch branches / revs, right? A "make" should do what I need?

@yuyichao
Copy link
Contributor

Just to be clear - I don't have to make clean or anything after I switch branches / revs, right? A "make" should do what I need?

Shouldn't need to.

@sbromberger
Copy link
Contributor Author

Version 0.4.0-dev+5860 (2015-07-08 20:57 UTC) Commit 7fa43ed (2 days old master)

julia> println(f2(M, 0, 0, 0, 0.0, 0.0, 0, eweights, vertices))
1

julia> println()

julia> println(methods(f2))
# 2 methods for generic function "f2":
f2{T}(::Type{M}, g, p, c, b::T, cu::T, v, d::AbstractArray{T,2}, ve) at none:1
f2{T}(::Type{T}, args...) at none:1

julia> println()


julia> @assert f(eweights, vertices) == 1
ERROR: AssertionError: f(eweights,vertices) == 1

@sbromberger
Copy link
Contributor Author

PS: your assertion error is strange. Why is it asserting on LightGraphs when you're not using it?

@yuyichao
Copy link
Contributor

--inline=no suppresses the error for my last example for me....

@yuyichao
Copy link
Contributor

PS: your assertion error is strange. Why is it asserting on LightGraphs when you're not using it?

I'm not asserting on LightGraphs?

@sbromberger
Copy link
Contributor Author

--inline=no suppresses for me as well on Version 0.4.0-dev+5860 (2015-07-08 20:57 UTC) Commit 7fa43ed (2 days old master)

and your assertion error above:

ERROR: LoadError: AssertionError: f(eweights,vertices) == 1
 in include_from_node1 at ./loading.jl:133
while loading /home/yuyichao/projects/contrib/LightGraphs.jl/test/maxadjvisit.jl, in expression starting on line 29

(Oh, your test code is in maxadjvisit.jl, I guess. I've been copying and pasting into the REPL.)

@yuyichao
Copy link
Contributor

If you are talking about the path.

Well, I'm just editting the tests inplace to reduce it...

@yuyichao
Copy link
Contributor

And what I pasted above is the content of my LightGraphs.jl/test/maxadjvisit.jl. Don't worry, you won't see it in a PR. =)

@sbromberger
Copy link
Contributor Author

So, can we say with some degree of assurance that

  1. the problem is not LightGraphs code, and
  2. we've narrowed down the possible causes?

I'm a bit lost at this point. How can I help?

@sbromberger
Copy link
Contributor Author

Also, see my bisect results above: #12063 (comment)

@yuyichao
Copy link
Contributor

  1. I think the bug is not in LightGraphs.
  2. I don't think I understand the cause but the repro I had above should be small enough so that ppl know more about type inference can try to reproduce the issue and fix it.
  3. I still don't really understand I cannot reproduce it before today.

@yuyichao
Copy link
Contributor

Ahh, I forgot that you've already bisected. That's about the only think I can suggest... (you can probably check if my smaller script can reproduce the same result arround the bad commit although I'm not sure if we'll learn anything new...)

I think @vtjnash and @JeffBezanson are also working on some type id issues that might be related to this so I'll just wait to see what they think. This is also enough debugging of typeinf for me today....

P.S. I have to say that you need to be quite unlucky to hit this. At least in the script I have above, even very subtle changes of the order or types makes the problem go away...

@sbromberger
Copy link
Contributor Author

Pinging here - what can I do to help fix this? It's causing breakages on LightGraphs for 0.4 only.

@JeffBezanson JeffBezanson self-assigned this Jul 15, 2015
@JeffBezanson
Copy link
Sponsor Member

@yuyichao Thanks for the reduced test. I managed to reduce it further to this:

f2{T}(tt, g, p, c, b, v, cu::T, d::AbstractArray{T, 2}, ve) = 1
f2(args...) = 2

f() = f2(0, 0, 0, 0, 0, 0, 0.0, spzeros(0,0), Int[])

@assert f() == 1

If you so much as breathe on this it starts working, otherwise it fails.

@vtjnash
Copy link
Sponsor Member

vtjnash commented Jul 15, 2015

it looks like _methods doesn't know how to deal with the Vararg{Union} object created by limit_tuple_type:

julia> Base._methods(f2,Tuple{Int,Int,Int,Int,Int,Int,Float64,Vararg{Union{Base.SparseMatrix.SparseMatrixCSC{Float64,Int64},Array{Int64,1}}}},4)
1-element Array{Any,1}:
 svec(Tuple{Int64,Int64,Int64,Int64,Int64,Int64,Float64,Vararg{Union{Base.SparseMatrix.SparseMatrixCSC{Float64,Int64},Array{Int64,1}}}},svec(),f2(args...) at none:1)

@vtjnash
Copy link
Sponsor Member

vtjnash commented Jul 15, 2015

fwiw, this was not an issue on v0.3:

julia> Base._methods(f2,(Int,Int,Int,Int,Int,Int,Float64,Union(Base.SparseMatrix.SparseMatrixCSC{Float64,Int64},Array{Int64,1})...),4)
2-element Array{Any,1}:
 ((Int64,Int64,Int64,Int64,Int64,Int64,Float64,SparseMatrixCSC{Float64,Int64},Union(Array{Int64,1},SparseMatrixCSC{Float64,Int64})),(T,Float64),f2{T}(tt,g,p,c,b,v,cu::T,d::AbstractArray{T,2},ve) at none:1)
 ((Int64,Int64,Int64,Int64,Int64,Int64,Float64,Union(Array{Int64,1},SparseMatrixCSC{Float64,Int64})...),(),f2(args...) at none:1)                                                                            

the difference I see between these is the order in which they got inserted into the Union, which might help explain the bisect result (since that commit might have changed the order of uid assignment for these two types).

@ScottPJones
Copy link
Contributor

Why does it get that Vararg{Union{ type there, instead of Base.SparseMatrix...., which I think would work? Removing a single argument makes it work correctly.

julia> a = spzeros(0,0)
0x0 sparse matrix with 0 Float64 entries:

julia> isa(a, AbstractArray{Float64,2})
true

@ScottPJones
Copy link
Contributor

Is this related at all to the changes that have affected inlining as well? (number of subscripts)

@JeffBezanson
Copy link
Sponsor Member

Ok, I think this is fixed. Plz confirm whether the original LightGraphs.jl problem is fixed.

@sbromberger
Copy link
Contributor Author

@JeffBezanson THANK YOU - this appears to have fixed the failures in LightGraphs.

Just out of interest - was it the commit I found via bisect that introduced the issue? (If so, it'd be the first time bisect's actually worked for me.)

@JeffBezanson
Copy link
Sponsor Member

Well, the bisect result was correct, but that commit did not point to the root cause. @vtjnash 's comment nailed it: #12063 (comment)
The bisected commit made a change that should have been unrelated, but happened to expose the true bug.

@tkelman
Copy link
Contributor

tkelman commented Oct 20, 2015

So I was preparing a backport branch for a probably-final 0.3.x release and accidentally brought a few extra tests in test/core.jl because of git conflicts, and found this was actually not working correctly on release-0.3. It was prior to #7882, but not after. Does this matter?

# bad: [ff764a40cc5ff5569649ac2d28142ad0f16135de] Allow inference of super even if has TypeVars (fix #12636)
git bisect bad ff764a40cc5ff5569649ac2d28142ad0f16135de
# bad: [3e70f9a863cf1d8fdea9850e2815de25405032f3] Merge branch 'release-0.3' of github.com:JuliaLang/julia into release-0.3
git bisect bad 3e70f9a863cf1d8fdea9850e2815de25405032f3
# bad: [07b75b99a828c2d54d0522b258d7f11c778a4133] Update packages.rst
git bisect bad 07b75b99a828c2d54d0522b258d7f11c778a4133
# bad: [07b75b99a828c2d54d0522b258d7f11c778a4133] Update packages.rst
git bisect bad 07b75b99a828c2d54d0522b258d7f11c778a4133
# bad: [07b75b99a828c2d54d0522b258d7f11c778a4133] Update packages.rst
git bisect bad 07b75b99a828c2d54d0522b258d7f11c778a4133
# good: [a7c1c328746e4d20d81e72a2dffa07d18c929b36] Also make line a size_t in task.c
git bisect good a7c1c328746e4d20d81e72a2dffa07d18c929b36
# good: [12166dd41fd57b5607aab4654dbbdedc4f04153d] Use config=Dict() instead of {} for Pkg.generate. Fixes #7855
git bisect good 12166dd41fd57b5607aab4654dbbdedc4f04153d
# bad: [1b0148ed2d1676d43a91d3e77a23a18e9604db81] Revert "Merge pull request #7888 from JuliaLang/teh/qrldiv"
git bisect bad 1b0148ed2d1676d43a91d3e77a23a18e9604db81
# good: [0006d81d475fee0dfe2cbbace2b904922c71da4a] Merge pull request #7874 from StephenVavasis/patch-4
git bisect good 0006d81d475fee0dfe2cbbace2b904922c71da4a
# good: [d2ba96586634bbb84db5844e7f5360ed6d12e1e4] Merge pull request #7880 from mbauman/show-function-prec
git bisect good d2ba96586634bbb84db5844e7f5360ed6d12e1e4
# bad: [6e2dc79065f1a0f4b73117754abababec3455a29] Merge pull request #7889 from JuliaLang/in/d3
git bisect bad 6e2dc79065f1a0f4b73117754abababec3455a29
# bad: [b21c386f090c9b6b6717030b5ca907afae496d87] Merge pull request #7882 from JuliaLang/dcj/gotobug
git bisect bad b21c386f090c9b6b6717030b5ca907afae496d87
# good: [78cca5b09cc61fb52ad48c99e0bf35cd268cfc6d] Fix goto/label in macros invoked from another module.
git bisect good 78cca5b09cc61fb52ad48c99e0bf35cd268cfc6d
# first bad commit: [b21c386f090c9b6b6717030b5ca907afae496d87] Merge pull request #7882 from JuliaLang/dcj/gotobug

edit: the above bisect might be garbage, if this happens intermittently... not sure

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
domain:types and dispatch Types, subtyping and method dispatch
Projects
None yet
Development

No branches or pull requests

8 participants