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

Jussi Lahtinen jussi.lahtinen at ...626...
Wed Nov 6 01:49:04 CET 2013


Not sure what is going on... too tired to focus properly. I'll look it
later more closely.

Instead of "= Alloc(IIf(sArch = "x86", 4, 8))", just write
"SizeOf(gb.Pointer)".


These functions doesn't return anything, so:

Extern UUID_Gen(op As Pointer) As Pointer In "libuuid:1" Exec
"uuid_generate"
 --->
Extern UUID_Gen(op As Pointer) In "libuuid:1" Exec "uuid_generate"


Extern UUID_ToStr(ip As Pointer, op As Pointer) As Pointer In "libuuid:1"
Exec "uuid_unparse"
--->
Extern UUID_ToStr(ip As Pointer, op As Pointer) In "libuuid:1" Exec
"uuid_unparse"


Jussi


On Wed, Nov 6, 2013 at 1:58 AM, Bruce <bbruen at ...2308...> wrote:

> 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
>
>
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models.
> Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and
> register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
>



More information about the User mailing list