@@@ ABORTING: INVALID HEAP ADDRESS IN dlfree addr=0x00000156

0

I have begun to try and keep some data persistant in my views when my device is rotated. Since implementing this after awhile my app will crash with the error:

@@@ ABORTING: INVALID HEAP ADDRESS IN dlfree addr=0x00000156
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 20787 (FinalizerDaemon)

After the app crashed every time I try to reopen it i get this same error instantly until I uninstall the app.

Does anyone know what causes this error?

Here is the code I used to save my data:

onDestory():

    System.out.println("Saving");
    ArrayList<Path> strokes = paintCanvas.strokes;
    ArrayList<Integer> colors = paintCanvas.colors;
    SharedPreferences settings = getSharedPreferences("colors", MODE_PRIVATE);
    settings.unregisterOnSharedPreferenceChangeListener(listener);



    /**Write Colors**/
    try
    {
        FileOutputStream os = openFileOutput("drawing.dat", MODE_PRIVATE);
        ObjectOutputStream output = new ObjectOutputStream(os);
        output.writeObject(colors);
        output.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

    /**Write Paths**/
    try
    {

        Gson gson = new Gson();

        File file = getFileStreamPath("paths.txt");
        FileWriter writer = new FileWriter(file);
        BufferedWriter output = new BufferedWriter(writer);
        for(Path p : strokes)
        {
            String s = gson.toJson(p);
            s = s + "\n";
            output.write(s);
        }

        output.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
        //System.out.println(e.getMessage());
    }

In onCreate():

    //Try Load here!
    /**Read Colors**/
    try
    {
        ArrayList<Integer> colors;
        ArrayList<Path> strokes;
        FileInputStream ins = openFileInput("drawing.dat");
        ObjectInputStream reader = new ObjectInputStream(ins);
        colors = (ArrayList<Integer>)reader.readObject();

        paintCanvas.colors = colors;
        System.out.println("Colors Loaded");
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

    /**Read Paths**/
    try
    {
        FileInputStream fis = openFileInput("paths.txt");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader bufferedReader = new BufferedReader(isr);
        StringBuilder sb = new StringBuilder();
        String line;
        Gson gson = new Gson();

        ArrayList<Path> paths = new ArrayList<Path>();
        while ((line = bufferedReader.readLine()) != null)
        {   
            paths.add(gson.fromJson(line,Path.class));
        }


        paintCanvas.strokes = paths;
        paintCanvas.currentStroke = paintCanvas.strokes.size() - 1;
        System.out.println("Paths Loaded");
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
java
android
asked on Stack Overflow Oct 19, 2013 by Deekor

1 Answer

0

Path Objects are not serializable. I believe this was causing the error, to get around this I created a custom data structure that implements serializable to hold the instructions of each path and then constructed my paths off of that.

answered on Stack Overflow Oct 20, 2013 by Deekor

User contributions licensed under CC BY-SA 3.0