I've now gone back to using structs direct without pointers but I'm still doing something wrong.

struct Deb {
    string name;
    ...
    RedBlackTree!string tags;

    bool valid() { return !(name.empty || description.empty); }

    void clear() { name = ""; ...; tags.clear; }
}

RedBlackTree!(Deb, (a, b) => a.name < b.name) debs;

Deb deb;
auto file = File(filename);
foreach(line; file.byLine) {
    line = strip(line);
    if (line.empty) {
        if (deb.valid)
            debs.insert(deb); // XXX
        else // report incomplete
        deb.clear;
        continue;
    }
    ...
}
if (deb.valid)
    debs.insert(deb);

This compiles & crashes with "Program exited with code -11".

What I'm trying to do but clearly don't understand is this:

1. create a struct
repeat:
 2.1. populate the struct
 2.2. copy the struct into an rbtree // XXX
 2.3. clear the original struct
 2.4. loop

At XXX does a copy take place? I thought it did with structs?

Anyway, here's the backtrace:

$ gdb DebFind
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
...
Reading symbols from DebFind...done.
(gdb) run
Starting program: /home/mark/app/d/debfind/DebFind
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff6e02700 (LWP 2366)]
...

Thread 1 "DebFind" received signal SIGSEGV, Segmentation fault.
0x0000555555701ef0 in _D3std9container6rbtree__T12RedBlackTreeTAyaVQea5_61203c2062Vbi0ZQBn5emptyMFNaNbNdNiNfZb (this=0x0) at /home/mark/opt/ldc2-1.20.0-linux-x86_64/bin/../import/std/container/rbtree.d:967
967             return _end.left is null;
(gdb) bt
#0 0x0000555555701ef0 in _D3std9container6rbtree__T12RedBlackTreeTAyaVQea5_61203c2062Vbi0ZQBn5emptyMFNaNbNdNiNfZb (this=0x0) at /home/mark/opt/ldc2-1.20.0-linux-x86_64/bin/../import/std/container/rbtree.d:967 #1 0x0000555555701a11 in qtrac.debfind.model.Model.readPackageFile(immutable(char)[]) (this=0x0, filename=...) at model.d:66 warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x55555591b820 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

#2 0x0000555555701671 in qtrac.debfind.model.Model.initialize(int) (this=0x0, maxDebNamesForWord=100) at model.d:31 warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

#3 0x00005555557045b0 in _D5qtrac7debfind9appwindow9AppWindow6__ctorMFC3gtk11ApplicationQnZCQCnQCkQCfQBy (this=0x7ffff7ece630, application=0x7ffff7ed1360) at appwindow.d:31 #4 0x0000555555722819 in _D5qtrac7debfind3app4mainFAAyaZ__T12__dgliteral2TC3gio11ApplicationQnZQBkMFQBaZv (GioApplication=0x7ffff7ed1360) at app.d:16 #5 0x000055555575be54 in _D7gobject8DClosureQj__T17d_closure_marshalTDFC3gio11ApplicationQnZvZQBtUPSQCv1c5types8GClosurePSQDrQwQw6GValuekQrPvQcZv (closure=0x555555c37690, return_value=0x0, n_param_values=1, param_values=0x7ffff7ef46e0, invocation_hint=0x7fffffffd710 "\b", marshal_data=0x0) at DClosure.d:122 #6 0x00007ffff419410d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #7 0x00007ffff41a705e in () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #8 0x00007ffff41af715 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #9 0x00007ffff41b012f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

#10 0x00007fffee148b95 in () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

#11 0x00007fffee148da6 in g_application_run () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

#12 0x000055555591b875 in warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

_D3gio11ApplicationQn3runMFAAyaZiwarning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

(warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

this=0x7ffff7ed1360, warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

argv=...)warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

at Application.dwarning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

warning: (Internal error: pc 0x55555591b874 in read in psymtab, but not in symtab.)

:931
#13 0x0000555555722760 in D main (args=...) at app.d:18


And thanks for helping!

Reply via email to