Skip to content

[BUG] Runtime error with llvm-ptx backend: double free or corruption (!prev) #532

@mcwitt

Description

@mcwitt

Description

I'm seeing the following runtime error in a minimal example intended to generate a 2D array, when run with the accelerate-llvm-ptx backend. The error is

double free or corruption (!prev)

and coincides by the process dying with SIGABRT.

The behavior seems to be dependent on the size of the generated array. On my machine, there is no error for sizes smaller than 363; for 363 and larger I get the runtime error.

Steps to reproduce

  1. Use the following Main.hs

    module Main where
    
    import Data.Array.Accelerate as A
    import qualified Data.Array.Accelerate.LLVM.PTX as GPU
    
    indices :: Exp Int -> Acc (Array DIM2 (Int, Int))
    indices n = generate (I2 n n) unindex2
    
    run :: Int -> IO ()
    run =
      writeFile "out"
        . show
        . GPU.run
        . indices
        . constant
    
    main :: IO ()
    main = run 363 -- <= 362 succeeds
  2. Compile with ghc Main.hs -threaded

  3. Run with ./Main

(The complete code along with cabal file and Nix files is in this gist.)

Expected behaviour
The sample code should not fail with double free or corruption (!prev), regardless of the size of the generated array (at least for reasonable sizes).

Your environment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions