Opened 9 years ago

Closed 9 years ago

#677 closed bug (fixed)

segfault with C<->Haskell ping-pong, should be stack overflow

Reported by: as49@… Owned by:
Priority: normal Milestone:
Component: Runtime System Version: 6.4
Keywords: GC FFI Cc:
Operating System: Linux Architecture: x86
Type of failure: Test Case:
Blocked By: Blocking:
Related Tickets: Differential Revisions:

Description

Maybe this relates to bug #370. In the infinite sequence:

Haskell function f: alloca memory then call C func g
C function g: call Haskell function f

The program terminates with a segmentation fault, rather than a stack overflow. I think I experience this problem in a real program which has a finite ping-pong sequence. I think there is actually a bug in the GC, since the segfault occurs after a very varying number of steps. It works with both, 6.2.2 and 6.4.

The three files
membug.h
membug.c
MemBug.hs
show this behaviour (nothing deep, but saves typing).

Compile with:

ghc-6.4 -fffi -c MemBug.hs membug.c

Link with:

ghc-6.4 MemBug.o membug.o MemBug_stub.o

Run with:

./a.out +RTS -H5m -G1

Note that any other opetions would do, too.

Axel.

Attachments (3)

membug.c (198 bytes) - added by simonmar 9 years ago.
membug.h (93 bytes) - added by simonmar 9 years ago.
MemBug.hs (403 bytes) - added by simonmar 9 years ago.

Download all attachments as: .zip

Change History (4)

Changed 9 years ago by simonmar

Changed 9 years ago by simonmar

Changed 9 years ago by simonmar

comment:1 Changed 9 years ago by simonmar

  • Resolution set to fixed
  • Status changed from new to closed

I believe this bug is fixed in 6.4.1. I've been running the test for a couple of minutes now without failure using 6.4.1.

Note: See TracTickets for help on using tickets.