strange segfault using yepCore dot products

14 views
Skip to first unread message

Stephen Tu

unread,
Dec 3, 2014, 6:13:21 AM12/3/14
to yeppp-...@googlegroups.com
Hi,

I'm trying to use yeppp dot products and getting a weird segfault. Here's the relevant code snippet. notice I just did something really simple

(gdb) list
50
52      double foobar = 0.;
53      double a[] = {0, 1, 2, 3, 4};
54      double b[] = {0, 1, 2, 3, 4};
55      YepStatus stat = yepCore_DotProduct_V64fV64f_S64f(&a[0], &b[0], &foobar, 2);
56      if (stat != YepStatusOk) {
57        std::cout << "nogood" << std::endl;
58      } else {
59        std::cout << "worked" << std::endl;

and what I'm getting is:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x00007fffdc748d0b in lagrange_and_grad_L_fast (vvec=<optimized out>, jvec=<optimized out>, ivec=<optimized out>, measurements=<optimized out>, sigma=<optimized out>, 
    y=<optimized out>, Lflat=<optimized out>, acc=<optimized out>, r=<optimized out>, n=<optimized out>, m=<optimized out>) at include/sputnik/kernels.hpp:55
#2  __pyx_pf_7sputnik_7nucleus_8_kernels_lagrange_and_grad_L_fast (__pyx_self=<optimized out>, __pyx_v_vvec=<optimized out>, __pyx_v_jvec=<optimized out>, 
    __pyx_v_ivec=<optimized out>, __pyx_v_measurements=<optimized out>, __pyx_v_sigma=<optimized out>, __pyx_v_y=<optimized out>, __pyx_v_Lflat=<optimized out>, 
    __pyx_v_acc=<optimized out>, __pyx_v_r=<optimized out>, __pyx_v_n=<optimized out>, __pyx_v_m=<optimized out>) at sputnik/nucleus/_kernels.cpp:1391
#3  __pyx_pw_7sputnik_7nucleus_8_kernels_1lagrange_and_grad_L_fast (__pyx_self=0x7fffffffd7d0, __pyx_args=0x1683240, __pyx_kwds=0x4c) at sputnik/nucleus/_kernels.cpp:1289
#4  0x00007ffff7af0fa4 in call_function (oparg=<optimized out>, pp_stack=0x7fffffffdbf8) at Python/ceval.c:4033
#5  PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:2679
#6  0x00007ffff7af2b1e in PyEval_EvalCodeEx (co=0x7fffe79cf9b0, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=3, kws=0x1591dd0, kwcount=2, 
    defs=0x7fffe1577380, defcount=4, closure=0x0) at Python/ceval.c:3265
#7  0x00007ffff7af0cd2 in fast_function (nk=<optimized out>, na=3, n=<optimized out>, pp_stack=0x7fffffffddf8, func=0x7fffdc9570c8) at Python/ceval.c:4129
#8  call_function (oparg=<optimized out>, pp_stack=0x7fffffffddf8) at Python/ceval.c:4054
#9  PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:2679
#10 0x00007ffff7af1a1e in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7fffffffdf48, func=0x7fffdc95fa28) at Python/ceval.c:4119
#11 call_function (oparg=<optimized out>, pp_stack=0x7fffffffdf48) at Python/ceval.c:4054
#12 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at Python/ceval.c:2679
#13 0x00007ffff7af2b1e in PyEval_EvalCodeEx (co=0x7ffff7e952b0, globals=<optimized out>, locals=<optimized out>, args=<optimized out>, argcount=0, kws=0x0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at Python/ceval.c:3265
#14 0x00007ffff7af2c32 in PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at Python/ceval.c:673
#15 0x00007ffff7b129f0 in run_mod (arena=0x65c640, flags=0x7fffffffe240, locals=0x7ffff7f56168, globals=0x7ffff7f56168, filename=<optimized out>, mod=0x6b8010)
    at Python/pythonrun.c:1377
#16 PyRun_FileExFlags (fp=0x6a10b0, filename=<optimized out>, start=<optimized out>, globals=0x7ffff7f56168, locals=0x7ffff7f56168, closeit=1, flags=0x7fffffffe240)
    at Python/pythonrun.c:1363
#17 0x00007ffff7b12bcf in PyRun_SimpleFileExFlags (fp=0x6a10b0, filename=0x7fffffffe617 "reconstruct.py", closeit=1, flags=0x7fffffffe240) at Python/pythonrun.c:955
#18 0x00007ffff7b28394 in Py_Main (argc=<optimized out>, argv=<optimized out>) at Modules/main.c:645
#19 0x00007ffff7053040 in __libc_start_main () from /usr/lib/libc.so.6
#20 0x0000000000400649 in _start ()

(gdb) f 1
#1  0x00007fffdc748d0b in lagrange_and_grad_L_fast (vvec=<optimized out>, jvec=<optimized out>, ivec=<optimized out>, measurements=<optimized out>, sigma=<optimized out>, 
    y=<optimized out>, Lflat=<optimized out>, acc=<optimized out>, r=<optimized out>, n=<optimized out>, m=<optimized out>) at include/sputnik/kernels.hpp:55
55      YepStatus stat = yepCore_DotProduct_V64fV64f_S64f(&a[0], &b[0], &foobar, 2);

(gdb) p a
$1 = {0, 1, 2, 3, 4}
(gdb) p b
$2 = {0, 1, 2, 3, 4}
(gdb) p foobar
$3 = 0
(gdb) p &a[0]


I'm using the latest version of Yeppp on linux x86_64. Note that I am able to run the example program "Entropy.c" just fine. Any tips for debugging? The usual backtrace in gdb doesn't seem to be helping here. 

Thanks!

Marat Dukhan

unread,
Dec 3, 2014, 10:05:43 AM12/3/14
to Stephen Tu, yeppp-...@googlegroups.com
Hi Stephen,

Thank you for trying Yeppp!

I think the crash is because your code did not initialize the library.
You need to call yepLibrary_Init before using other Yeppp! functions.
This answer on StackOverflow provides more details.

Regards,
Marat

--
You received this message because you are subscribed to the Google Groups "yeppp-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yeppp-discus...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Stephen Tu

unread,
Dec 3, 2014, 2:59:56 PM12/3/14
to Marat Dukhan, yeppp-...@googlegroups.com
Hi Marat,

Thanks this did the trick! Sorry I didn't see this earlier. 
Reply all
Reply to author
Forward
0 new messages