We must find out where exactly the segfault happens. You can either look up how 
to set breakpoints and step through the code, or use good 'ol printf debugging 
:-)

> Gesendet: Mittwoch, 11. Dezember 2019 um 00:31 Uhr
> Von: "Lucas Cordiviola" <[email protected]>
> An: "[email protected]" <[email protected]>, "Christof Ressi" 
> <[email protected]>
> Betreff: Re: [PD-dev] Double precision externals extensions.
>
> This is the backtrace with Msys2:
> 
> ~~~~~~~~~~~~~~~~~~
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x000000006eb469f5 in pddplink_setup ()
>     from /d/00-lucarda-external-dep/out64single-new-cyc/lucdep/liblucdep.dll
> (gdb) bt
> #0  0x000000006eb469f5 in pddplink_setup ()
>     from /d/00-lucarda-external-dep/out64single-new-cyc/lucdep/liblucdep.dll
> #1  0x000000006eb41467 in liblucdep_setup ()
>     from /d/00-lucarda-external-dep/out64single-new-cyc/lucdep/liblucdep.dll
> #2  0x00000000673e8c85 in sys_trylock ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #3  0x00000000673e9304 in sys_loadlib_iter ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #4  0x0000000067374ed5 in pd!canvas_declare ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #5  0x00000000673e95e8 in sys_load_lib ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #6  0x00000000673747d8 in pd!glist_menu_open ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #7  0x0000000067374c7d in pd!canvas_declare ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #8  0x00000000673d68db in pd!binbuf_eval ()
> --Type <RET> for more, q to quit, c to continue without paging--
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #9  0x00000000673d73f6 in pd!binbuf_evalfile ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #10 0x0000000067379977 in pd!glob_evalfile ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #11 0x00000000673e9789 in sys_run_scheduler ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #12 0x00000000673ea6ec in pd!glob_initfromgui ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #13 0x00000000673d68db in pd!binbuf_eval ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #14 0x00000000673e75bd in socketreceiver_read ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #15 0x00000000673e6906 in sys_oktoloadfiles ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> --Type <RET> for more, q to quit, c to continue without paging--
> #16 0x00000000673e825b in sys_pollgui ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #17 0x00000000673dfdda in pd!m_mainloop ()
>     from 
> /c/Users/Lucarda/Downloads/pure-data-double-precision/build4/pd-0.50.2-double/bin/pd.dll
> #18 0x00000000004013b4 in ?? ()
> #19 0x00000000004014db in ?? ()
> #20 0x00007fffdec01611 in KERNEL32!BaseThreadInitThunk ()
>     from /c/Windows/system32/KERNEL32.DLL
> #21 0x00007fffdfb764ad in ntdll!RtlUserThreadStart ()
>     from /c/Windows/SYSTEM32/ntdll.dll
> #22 0x0000000000000000 in ?? ()
> Backtrace stopped: previous frame inner to this frame (corrupt stack?)
> (gdb)
> 
> ~~~~~~~~~~~~~
> 
> Mensaje telepatico asistido por maquinas.
> 
> On 12/10/2019 8:07 PM, Lucas Cordiviola wrote:
> > Thx
> >
> > :)
> >
> > Mensaje telepatico asistido por maquinas.
> >
> > On 12/10/19 7:59 PM, Christof Ressi wrote:
> >>> How do I install gdb in msys2?
> >> pacman -S gdb
> >>
> >> Execute in MinGW32 shell and MINGW64 shell accordingly
> >>
> >>> How do I use it?
> >> gdb --args pd [arguments]
> >>> run // actually run the program
> >> ... wait for crash ...
> >>> bt // get the backtrace
> >> press Enter repeatedly to see more lines
> >>
> >> Christof
> >>
> >>> Gesendet: Dienstag, 10. Dezember 2019 um 22:59 Uhr
> >>> Von: "Lucas Cordiviola" <[email protected]>
> >>> An: "[email protected]" <[email protected]>, "Christof Ressi" 
> >>> <[email protected]>
> >>> Betreff: Re: [PD-dev] Double precision externals extensions.
> >>>
> >>> @christof
> >>>
> >>> How do I build Pd with debug symbols?
> >>>
> >>> How do I install gdb in msys2?
> >>>
> >>> How do I use it?
> >>>
> >>> or can I send you the .dll lib and test patch do you get the backtrace?
> >>>
> >>>
> >>> --
> >>>
> >>> Mensaje telepatico asistido por maquinas.
> >>>
> >>> On 12/10/19 6:48 PM, Christof Ressi wrote:
> >>>>>> # pkgs including both single- and double-precision externals
> >>>>>> a single external binary (say: "foo.dll") can hold both 
> >>>>>> single-precision
> >>>>>> and double-precision variants of the [foo] object.
> >>>> I'm also interested in how this works. The following solution popped up 
> >>>> in my head: compile the object twice, one time with -DPD_FLOATSIZE=32 
> >>>> and another time with -DPD_FLOATSIZE=64, with different setup functions 
> >>>> based on -DPD_FLOATSIZE, then link it with a third file which exports 
> >>>> the "real" setup function (which calls the other two private setup 
> >>>> functions).
> >>>>
> >>>> Is there an easier way?
> >>>>
> >>>> If not, then a new extension could be handy, so people can throw both 
> >>>> versions into the same folder.
> >>>>
> >>>> Christof
> >>>>
> >>>>> Gesendet: Dienstag, 10. Dezember 2019 um 21:45 Uhr
> >>>>> Von: "Lucas Cordiviola" <[email protected]>
> >>>>> An: "[email protected]" <[email protected]>
> >>>>> Betreff: Re: [PD-dev] Double precision externals extensions.
> >>>>>
> >>>>> On 12/10/2019 4:54 PM, IOhannes m zmölnig wrote:
> >>>>>> # avoiding crashes
> >>>>>> an external that has been compiled with single-precision will not
> >>>>>> register objectclasses in a double-precision Pd - so the 
> >>>>>> doubl-precision
> >>>>>> Pd will not know about those new objects and not crash while using 
> >>>>>> them.
> >>>>>> same goes for the other way round.
> >>>>> I see with normal externals itt refuses to load and thats fine.
> >>>>>
> >>>>> But I'm creating a single binary external with a collection of authors
> >>>>> [zexy] [cyclone] [ggee] [pddplink] ...
> >>>>>
> >>>>> I create a setup for the lib and is working *OK* in Pd-w64-32 but it
> >>>>> crashed the double precision.
> >>>>>
> >>>>> this is my wrapper setup:
> >>>>>
> >>>>> ~~~~~~~~~~~~~~~~~~
> >>>>>
> >>>>> #include "m_pd.h"
> >>>>>
> >>>>> #include <stdio.h>
> >>>>> #include <stdarg.h>
> >>>>>
> >>>>>
> >>>>> #ifdef __WIN32__
> >>>>> # define vsnprintf _vsnprintf
> >>>>> #endif
> >>>>>
> >>>>>
> >>>>>
> >>>>> typedef struct liblucdep {
> >>>>>       t_object t_ob;
> >>>>> } t_liblucdep;
> >>>>>
> >>>>> t_class *liblucdep_class=NULL;
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> static void *liblucdep_new(void)
> >>>>> {
> >>>>>       t_liblucdep *x = (t_liblucdep *)pd_new(liblucdep_class);
> >>>>>       return (x);
> >>>>> }
> >>>>>
> >>>>> void liblucdep_setup(void)
> >>>>> {
> >>>>>
> >>>>>       post("*******************");
> >>>>>       post("liblucdep loaded.");
> >>>>>       post("*******************");
> >>>>>
> >>>>>       liblucdep_class = class_new(gensym("liblucdep"), liblucdep_new, 0,
> >>>>> sizeof(t_liblucdep), 0, 0);
> >>>>>
> >>>>>
> >>>>>       /* ************************************** */
> >>>>>       coll_setup();
> >>>>>       comment_setup();
> >>>>>       freeverb_tilde_setup();
> >>>>>       glue_setup();
> >>>>>       helplink_setup();
> >>>>>       image_setup();
> >>>>>       pddplink_setup();
> >>>>>       pink_tilde_setup();
> >>>>>       reson_tilde_setup();
> >>>>>       tabminmax_setup();
> >>>>>       time_setup();
> >>>>>       z_tilde_setup();
> >>>>> }
> >>>>>
> >>>>>
> >>>>> ~~~~~~~~~~~~~~~~~
> >>>>>
> >>>>>
> >>>>>> # pkgs including both single- and double-precision externals
> >>>>>> a single external binary (say: "foo.dll") can hold both 
> >>>>>> single-precision
> >>>>>> and double-precision variants of the [foo] object.
> >>>>> How is that?
> >>>>>
> >>>>> As I am willing to contribute to the w32/64-double Deken.
> >>>>>
> >>>>>
> >>>>> :)
> >>>>>
> >>>>> Mensaje telepatico asistido por maquinas.
> >>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> Pd-dev mailing list
> >>>>> [email protected]
> >>>>> https://lists.puredata.info/listinfo/pd-dev
> >>>>>
> >>>> _______________________________________________
> >>>> Pd-dev mailing list
> >>>> [email protected]
> >>>> https://lists.puredata.info/listinfo/pd-dev
> >>
> >> _______________________________________________
> >> Pd-dev mailing list
> >> [email protected]
> >> https://lists.puredata.info/listinfo/pd-dev
> > _______________________________________________
> > Pd-dev mailing list
> > [email protected]
> > https://lists.puredata.info/listinfo/pd-dev
>



_______________________________________________
Pd-dev mailing list
[email protected]
https://lists.puredata.info/listinfo/pd-dev

Reply via email to