Fail Testing Mosek 8 -> ERROR: LoadError: ReadOnlyMemoryError()

mosek

#1

Testing Mosek on Windows with Julia v0.6.2 - 32 bits.

I am trying to run this code:

using JuMP
using Mosek
#using SCS

model = Model(solver=MosekSolver())
#model = Model(solver=SCSSolver())

@variable(model, Q[1:2, 1:2], SDP)
@constraint(model, Q[1,1] - 1 == Q[2,2])
@variable(model, objective)
T = [1 Q[1,1]; Q[1,1] objective]
@SDconstraint(model, T >= 0)
@objective(model, :Min, objective)
solve(model)

#println("Objective value: ", getobjectivevalue(model))
#println("Q: ", getvalue(Q))

@show getvalue(Q)
@show getobjectivevalue(model)
@show getvalue(objective)
@assert getobjectivevalue(model) == getvalue(objective)

However, I could get that:

> ERROR: LoadError: ReadOnlyMemoryError()
> Stacktrace:
> [1] (::Mosek.##375#376{Mosek.Task,Int32,Int32,Array{Int64,1},Array{Float64,1},Int32})() at C:\Users\Erik.julia\v0.6\Mosek\src\msk_functions.jl:5623
> [2] disable_sigint at .\c.jl:340 [inlined]
> [3] putbaraij(::Mosek.Task, ::Int32, ::Int32, ::Array{Int64,1}, ::Array{Float64,1}) at C:\Users\Erik.julia\v0.6\Mosek\src\msk_functions.jl:5622
> [4] loadproblem!(::Mosek.MosekMathProgSolverInterface.MosekMathProgConicModel, ::Array{Float64,1}, ::SparseMatrixCSC{Float64,Int32}, ::Array{Float64,1}, ::Array{Tuple{Symbol,Any},1}, ::Array{Tuple{Symbol,Any},1}, ::Symbol) at C:\Users\Erik.julia\v0.6\Mosek\src\MosekConicInterface.jl:278
> [5] loadproblem!(::Mosek.MosekMathProgSolverInterface.MosekMathProgConicModel, ::Array{Float64,1}, ::SparseMatrixCSC{Float64,Int32}, ::Array{Float64,1}, ::Array{Any,1}, ::Array{Any,1}, ::Symbol) at C:\Users\Erik.julia\v0.6\Mosek\src\MosekConicInterface.jl:99
> [6] loadproblem!(::Mosek.MosekMathProgSolverInterface.MosekMathProgConicModel, ::Array{Float64,1}, ::SparseMatrixCSC{Float64,Int32}, ::Array{Float64,1}, ::Array{Any,1}, ::Array{Any,1}) at C:\Users\Erik.julia\v0.6\Mosek\src\MosekConicInterface.jl:88
> [7] #build#119(::Bool, ::Bool, ::JuMP.ProblemTraits, ::Function, ::JuMP.Model) at C:\Users\Erik.julia\v0.6\JuMP\src\solvers.jl:324
> [8] (::JuMP.#kw##build)(::Array{Any,1}, ::JuMP.#build, ::JuMP.Model) at .<missing>:0
> [9] #solve#116(::Bool, ::Bool, ::Bool, ::Array{Any,1}, ::Function, ::JuMP.Model) at C:\Users\Erik.julia\v0.6\JuMP\src\solvers.jl:168
> [10] solve(::JuMP.Model) at C:\Users\Erik.julia\v0.6\JuMP\src\solvers.jl:150
> [11] include_from_node1 at .\loading.jl:576
> [12] include at .\sysimg.jl:14
> [13] process_options at .\client.jl:305
> [14] _start at .\client.jl:371

I ran my code with SCS solver and I could get the solution but the Mosek does not working.
Please, I need some help.


#2

Please

  1. format your code with backticks,
  2. provide a self-contained minimal working example.

#3

Thank you!
I am giving more information.


#4

Just to let people know. This question is crossposted at the repo, where the MOSEK guys are trying to sort it out: https://github.com/JuliaOpt/Mosek.jl/issues/144


#5

I too encountered a mysterious ReadOnlyMemoryError() in 0.6.2 under linux. Here is the discourse link:

The issue is not yet resolved.


#6

I’ve had that error once or twice when using readcsv / readdlm on kaggle’s kernels platform, passing though an IOBuffer with default settings (readable=true / writeable = true / etc) seemed to help. /readonly? fix for readdlm
Reading a file probably shouldn’t need write access though.

-Added: had a little dig and there’s a fill(**readonly?** stringbuff, 1,0 ) hiding in DLMStore() -base/dataFmt.jl line 211 that might err if it passes a reference?