Arc Forumnew | comments | leaders | submitlogin
1 point by almkglor 6120 days ago | link | parent

tried again with the latest version. Running plain, once I load gtk.arc:

  /usr/bin/ld: /tmp/ccwElZvz.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
  /tmp/ccwElZvz.o: could not read symbols: Bad value
  collect2: ld returned 1 exit status
Modifying ffi.arc to add -fPIC to gcc call:

  arc>  (load "gtk.arc")
  *** redefining cdef
  *** redefining w/ffi
  *** redefining w/inline
  *** redefining w/del
  gs1789.c: In function ‘inc_pt’:
  gs1789.c:3: warning: cast from pointer to integer of different size
  gs1789.c:3: warning: cast to pointer from integer of different size


  nil
  arc>  (gtk-hello-world)
  Segmentation fault (core dumped)
The segmentation fault occurs whenever I click the button or close the window. Moving it around and resizing doesn't seem to hurt it.

Modifying inc_pt to:

    void* inc_pt(void *pt, unsigned int offset) 
   {
     return (void*)&((char*)pt)[offset];
   }
results in:

  arc>  (load "gtk.arc")
  *** redefining cdef
  *** redefining w/ffi
  *** redefining w/inline
  *** redefining w/del

  nil
  arc> (gtk-hello-world)
  Segmentation fault (core dumped)
Segfaults at the same conditions. ^^

Possibly the problem is in the 'connect thing?



2 points by stefano 6120 days ago | link

I think the problem is in the connect: with mzscheme 352 it segfaults(not always, though), with mzscheme 372 it seems to work. Maybe is a bug in mzscheme 352 C callbacks. Wich version are you using?

-----

1 point by almkglor 6120 days ago | link

360. Yes, the problem does seem to be in 'connect, because that appears to be the part where it interacts with the user.

That said, is another potential problem the fact that I'm using a 64-bit machine+kernel?

-----

2 points by stefano 6120 days ago | link

To access some structures (such as GValue) I manually allocate the correct size with cmalloc, and to access the structure i use low level functions (such as inc_pt) wich make assumptions on the size of the structure. I program on a 32 bit machine where pointers are smaller than on a 64 bit machine, so this could (and probably is) a problem. I definetly need a better way to access C structures, but this would mean to extend Arc FFI capabilities.

Edit: i've tried mzscheme 360 and it works. The problem then is with the 64 bit.

-----

1 point by stefano 6118 days ago | link

I've found and solved the signal connection problem, the bug fix is now on Anarki.

-----