Kron and shared data, not the right amount of sharing?

The kron function on vectors seems to be inappropriately holding on to its input. As a simple example, the input

s = [2,5]; k=kron(s,[3,1]); push!(s,4)

produces the error:

cannot resize array with shared data

 [1] _growend! at ./array.jl:892 [inlined]
 [2] push!(::Array{Int64,1}, ::Int64) at ./array.jl:935
 [3] top-level scope at In[71]:4
 [4] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091


s = [2,5]; k=kron(copy(s),[1,0]); push!(s,4)

behaves as I would have expected the initial input to. So it would appear that the output of kron somehow shares data with it’s input.
By way of contrast:

s = [2,5]; k=kron(s,[1,0]); s .= [3,7]; k

shows that the output of kron only depends on the initial value of s. It seems like the restrictions from the sharing of s are thus unnecessary.

I would have expected kron to either always use a copy of its input, in which case the first input wouldn’t produce an error, or for it’s output to be some clever construct that maintains a reference to the input vectors, in which case the third input produces surprising results.

Is this just an unavoidable side effect of the fact that kron for vectors is implemented in terms of kron for matrices? It seems like the culprit is that Matrix created by the reshape(s,length(s),1) function argument isn’t properly transient.

Looks like it’s an example of this issue.