[Gambas-user] Segfault when freeing pointer used for Extern

Bruce bbruen at ...2308...
Wed Nov 6 00:58:57 CET 2013


Dear experts,

Can anyone see what I'm doing wrong here.  Source archive is attached,
but here is the entire code:

----------------------------------------------------------------------
' Gambas module file

' void uuid_generate(uuid_t out);
Extern UUID_Gen(op As Pointer) As Pointer In "libuuid:1" Exec
"uuid_generate"

' void uuid_unparse(uuid_t uu, char *out)
Extern UUID_ToStr(ip As Pointer, op As Pointer) As Pointer In
"libuuid:1" Exec "uuid_unparse"

Public Sub Main()

  Dim OP As Pointer    ' ptr to the uuid returned by uuid_generate
  Dim SP As Pointer    ' ptr to the string returned by uuid_unparse
  
  Dim sOP As String    ' our result (UUID as a string)
  Dim rtn As Integer   ' int rtn code from extern funcs
  Dim sArch As String  ' system architecture (selects pointer length)
  
  sArch = System.Architecture
  Error "Arch=" & sArch
  
  OP = Alloc(IIf(sArch = "x86", 4, 8))
  SP = Alloc(IIf(sArch = "x86", 4, 8))
  
  rtn = UUID_Gen(OP)
  Error "UUID_Gen=" & rtn
  
  rtn = UUID_ToStr(OP, SP)
  sOP = String@(SP)
  Error Subst("UUID_ToStr=&1\tUUID=&2", rtn, sOP)
  Error
  
  Free(OP)
  Free(SP)
  
End         '<- the problem happens here
----------------------------------------------------------------------

I get variously a SegFault(11) or an Aborted(6) here. The Segfault shows
nothing, but the Abort produces an invalid pointer dump like the
following: 

*** glibc detected *** demoUUID: munmap_chunk(): invalid pointer:
0x0899eba0 ***
======= Backtrace: =========
/lib/i686/libc.so.6(+0x72d32)[0xb75ffd32]
demoUUID[0x8055232]
demoUUID[0x806b872]
demoUUID[0x804b3cd]
/lib/i686/libc.so.6(__libc_start_main+0xf5)[0xb75a69e5]
demoUUID[0x804b40d]
======= Memory map: ========
08048000-08094000 r-xp 00000000 08:01 818112     /usr/bin/gbx3
08094000-08099000 rw-p 0004c000 08:01 818112     /usr/bin/gbx3
08099000-0809b000 rw-p 00000000 00:00 0 
08996000-089b7000 rw-p 00000000 00:00 0          [heap]
417e7000-417ec000 r-xp 00000000 08:01
597595     /usr/lib/libffi.so.5.0.9
417ec000-417ed000 rw-p 00005000 08:01
597595     /usr/lib/libffi.so.5.0.9
b69d3000-b69d6000 r-xp 00000000 08:01 1112777    /lib/libuuid.so.1.3.0
b69d6000-b69d7000 rw-p 00002000 08:01 1112777    /lib/libuuid.so.1.3.0
b69ff000-b6a00000 rw-p 00000000 00:00 0 
b6a00000-b6a07000 r--s 00000000 08:01
761994     /usr/lib/gconv/gconv-modules.cache
b6a07000-b6a19000 r-xp 00000000 08:01
683710     /usr/lib/gambas3/gb.eval.so.0.0.0
b6a19000-b6a1c000 rw-p 00011000 08:01
683710     /usr/lib/gambas3/gb.eval.so.0.0.0
b6a1c000-b721c000 rw-p 00000000 00:00 0 
b721c000-b738c000 r--p 00334000 08:01
738240     /usr/share/locale/locale-archive
b738c000-b758c000 r--p 00000000 08:01
738240     /usr/share/locale/locale-archive
b758c000-b758d000 rw-p 00000000 00:00 0 
b758d000-b7734000 r-xp 00000000 08:01 1117283    /lib/i686/libc-2.16.so
b7734000-b7735000 ---p 001a7000 08:01 1117283    /lib/i686/libc-2.16.so
b7735000-b7737000 r--p 001a7000 08:01 1117283    /lib/i686/libc-2.16.so
b7737000-b7738000 rw-p 001a9000 08:01 1117283    /lib/i686/libc-2.16.so
b7738000-b773c000 rw-p 00000000 00:00 0 
b773c000-b7752000 r-xp 00000000 08:01
1112626    /lib/i686/libpthread-2.16.so
b7752000-b7753000 r--p 00015000 08:01
1112626    /lib/i686/libpthread-2.16.so
b7753000-b7754000 rw-p 00016000 08:01
1112626    /lib/i686/libpthread-2.16.so
b7754000-b7756000 rw-p 00000000 00:00 0 
b7756000-b7759000 r-xp 00000000 08:01 1112764    /lib/libdl-2.16.so
b7759000-b775a000 r--p 00002000 08:01 1112764    /lib/libdl-2.16.so
b775a000-b775b000 rw-p 00003000 08:01 1112764    /lib/libdl-2.16.so
b775b000-b7764000 r-xp 00000000 08:01 1112247    /lib/libintl.so.8.1.2
b7764000-b7765000 rw-p 00009000 08:01 1112247    /lib/libintl.so.8.1.2
b7765000-b77a3000 r-xp 00000000 08:01 1112624    /lib/i686/libm-2.16.so
b77a3000-b77a4000 r--p 0003d000 08:01 1112624    /lib/i686/libm-2.16.so
b77a4000-b77a5000 rw-p 0003e000 08:01 1112624    /lib/i686/libm-2.16.so
b77a9000-b77c5000 r-xp 00000000 08:01
1117309    /lib/libgcc_s-4.7.2.so.1
b77c5000-b77c6000 rw-p 0001b000 08:01
1117309    /lib/libgcc_s-4.7.2.so.1
b77c6000-b77c8000 rw-p 00000000 00:00 0 
b77c8000-b77cd000 r-xp 00000000 08:01
683612     /usr/lib/gambas3/gb.debug.so.0.0.0
b77cd000-b77ce000 rw-p 00004000 08:01
683612     /usr/lib/gambas3/gb.debug.so.0.0.0
b77ce000-b77cf000 rw-p 00000000 00:00 0 
b77cf000-b77ed000 r-xp 00000000 08:01 1112632    /lib/ld-2.16.so
b77ed000-b77ee000 r--p 0001d000 08:01 1112632    /lib/ld-2.16.so
b77ee000-b77ef000 rw-p 0001e000 08:01 1112632    /lib/ld-2.16.so
bff86000-bffa7000 rw-p 00000000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]


tia
Bruce
-------------- next part --------------
A non-text attachment was scrubbed...
Name: demoUUID-0.0.1.tar.gz
Type: application/x-compressed-tar
Size: 4948 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20131106/931ccb1f/attachment.bin>


More information about the User mailing list