I was implementing a bunch of Runge-Kutta tableaus and ran into an issue. 
Specific tableaus which are defined inside of a function inside of 
DifferentialEquations.jl cause segfaults, but those exact same functions 
will not segfault when not inside the package. For example, the code (on 
master):

using DifferentialEquations
constructVern6()

causes segfaults (the Windows and Linux versions at the bottom of the post) 
(tested on v0.5 and v0.6). However, I can take that same function:

function constructVern6(T::Type = Float64)
  c1   =T(3//50)
  c2   =T(1439//15000)
  c3   =T(1439//10000)
  c4   =T(4973//10000)
  c5   =T(389//400)
  c6   =T(1999//2000)
  a21  =T(3//50)
  a31  =T(519479//27000000)
  a32  =T(2070721//27000000)
  a41  =T(1439//40000)
  a43  =T(4317//40000)
  a51  =T(109225017611//82828840000)
  a53  =T(-417627820623//82828840000)
  a54  =T(43699198143//10353605000)
  a61  =T(-8036815292643907349452552172369//191934985946683241245914401600)
  a63  =T(246134619571490020064824665//1543816496655405117602368)
  a64  =T(-13880495956885686234074067279//113663489566254201783474344)
  a65  =T(755005057777788994734129//136485922925633667082436)
  a71 
 
=T(-1663299841566102097180506666498880934230261//30558424506156170307020957791311384232000)
  a73 
 =T(130838124195285491799043628811093033//631862949514135618861563657970240)
  a74 
 
=T(-3287100453856023634160618787153901962873//20724314915376755629135711026851409200)
  a75 
 =T(2771826790140332140865242520369241//396438716042723436917079980147600)
  a76  =T(-1799166916139193//96743806114007800)
  a81 
 
=T(-832144750039369683895428386437986853923637763//15222974550069600748763651844667619945204887)
  a83 
 =T(818622075710363565982285196611368750//3936576237903728151856072395343129)
  a84 
 
=T(-9818985165491658464841194581385463434793741875//61642597962658994069869370923196463581866011)
  a85 
 
=T(31796692141848558720425711042548134769375//4530254033500045975557858016006308628092)
  a86  =T(-14064542118843830075//766928748264306853644)
  a87  =T(-1424670304836288125//2782839104764768088217)
  a91  =T(382735282417//11129397249634)
  a94  =T(5535620703125000//21434089949505429)
  a95  =T(13867056347656250//32943296570459319)
  a96  =T(626271188750//142160006043)
  a97  =T(-51160788125000//289890548217)
  a98  =T(163193540017//946795234)
  b1   =T(124310637869885675646798613//2890072468789466426596827670)
  b4   =T(265863151737164990361330921875//1113197271463372303940319369579)
  b5   =T(3075493557174030806536302953125//6843749922042323876546949699876)
  b6   =T(67798000008733879813263055//29532792147666737550036372)
  b7   =T(-1099436585155390846238326375//15055706496446408859196167)
  b8   =T(26171252653086373181571802//368794478890732346033505)
  b9   =T(1//30)

  return 
c1,c2,c3,c4,c5,c6,a21,a31,a32,a41,a43,a51,a53,a54,a61,a63,a64,a65,a71,a73,a74,a75,a76,a81,a83,a84,a85,a86,a87,a91,a94,a95,a96,a97,a98,b1,b4,b5,b6,b7,b8,b9
end

put it in a script, run it, and call the function without segfaulting. I 
can even put that in a module without segfaulting!

I have been able to pin down the issue to be due to methods which look like 
this and include items that would be parsed as Rational{BigInt}. Any 
tableaus which are parsed to BigFloats or Rational{Int} don't have this 
issue. So it has something to do with the giant rationals (I have a few 
more examples if needed). @Ismael-VC noted that when he deleted his lib and 
v0.6 folders and re-installed, the error went away for him (that did not 
work for me). Thus I am thinking it may have to do with precompilation? 
Note that my precompiling hinting file does not hint these functions since 
they are brand new.

I will likely file an issue on the julialang issue if I can pinpoint the 
example to something which doesn't require installing 
DifferentialEquations.jl (because it is a large package). However, as I 
previously noted, I cannot re-create this outside of the package for some 
reason! Any help would be great!

P.S. For those that are curious, DifferentialEquations.jl does contain over 
100 ODE solver algorithms now 
<http://chrisrackauckas.github.io/DifferentialEquations.jl/latest/solvers/ode_solve/>,
 
with each having convergence tests (except for the handful with this 
segfault problem)!

-------------------------------------------------------------------------

Linux Segfault Message:

signal (11): Segmentation fault
while loading console, in expression starting on line 1
gcd at ./gmp.jl:256 [inlined]
Type at ./rational.jl:9
constructVern6 at 
/home/crackauc/.julia/v0.5/DifferentialEquations/src/ode/ode_tableaus.jl:1604
constructVern6 at 
/home/crackauc/.julia/v0.5/DifferentialEquations/src/ode/ode_tableaus.jl:1586
#99 at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:39
withpath at /home/crackauc/.julia/v0.5/Requires/src/require.jl:37
withpath at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:45
macro expansion at /home/crackauc/.julia/v0.5/Atom/src/eval.jl:107 [inlined]
#98 at ./task.jl:54
unknown function (ip: 0xffffffffffffffff)
Allocations: 36331487 (Pool: 36324167; Big: 7320); GC: 38

Windows Segfault Message:

Please submit a bug report with steps to reproduce this fault, and any 
error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0xcbd6e8 -- while loading console, 
in expression starting on line 1
gcd at .\gmp.jl:256 [inlined]
Type at .\rational.jl:9
constructVern6 at 
C:\Users\Chris\.julia\v0.6\DifferentialEquations\src\ode\ode_tableaus.jl:1604
constructVern6 at 
C:\Users\Chris\.julia\v0.6\DifferentialEquations\src\ode\ode_tableaus.jl:1586
jl_call_method_internal at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\julia_internal.h:192
 
[inlined]
jl_apply_generic at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\gf.c:1930
do_call at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\interpreter.c:66
eval at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\interpreter.c:190
jl_toplevel_eval_flex at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\toplevel.c:558
jl_parse_eval_all at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\ast.c:717
include_string at .\loading.jl:380
jl_call_method_internal at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\julia_internal.h:192
 
[inlined]
jl_apply_generic at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\gf.c:1930
do_call at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\interpreter.c:66
eval at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\interpreter.c:190
eval_body at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\interpreter.c:469
jl_interpret_call at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\interpreter.c:573
jl_toplevel_eval_flex at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\toplevel.c:572
 
[inlined]
jl_toplevel_eval at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\toplevel.c:580
jl_toplevel_eval_in_warn at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\builtins.c:576
eval at .\boot.jl:234
jl_call_method_internal at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\julia_internal.h:192
 
[inlined]
jl_apply_generic at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\gf.c:1930
#99 at C:\Users\Chris\.julia\v0.6\Atom\src\eval.jl:39
withpath at C:\Users\Chris\.julia\v0.6\Requires\src\require.jl:37
jl_call_method_internal at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\julia_internal.h:192
 
[inlined]
jl_apply_generic at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\gf.c:1930
withpath at C:\Users\Chris\.julia\v0.6\Atom\src\eval.jl:45
macro expansion at C:\Users\Chris\.julia\v0.6\Atom\src\eval.jl:107 [inlined]
#98 at .\task.jl:54
jl_call_method_internal at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\julia_internal.h:192
 
[inlined]
jl_apply_generic at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\gf.c:1930
jl_apply at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\julia.h:1392
 
[inlined]
start_task at 
/home/Administrator/buildbot/slave/package_win6_2-x64/build/src/home/Administrator/buildbot/slave/package_win6_2-x64/build/src\task.c:253
Allocations: 40695853 (Pool: 40684045; Big: 11808); GC: 53




Reply via email to