gforth - assert in malloc.c, Zeile 2372 nicht als exception?

10/06/2015 - 09:52 von djc | Report spam
Hallo,

durch meine weitreichende Programmierkunst habe ich folgendes erreicht:

gforth-itc: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.

Nach der Meldung geht nix mehr, kein ok, kein ^C, kein ^D, gforth muß von einem anderen Terminal aus gekillt werden:
7139 pts/0 S+ 0:00 gforth-itc ecore_ifoo.fs
.s
bye

bye
^C
Getötet

Ok, klar, ich habe bei allocate gemurxt.
Aber: Sollte das nicht zu einem THROW führen?

Ein exception stack trace würde mir auch wesentlich weiter helfen als die Meldung von C.

Ich werde mal allocate instrumentieren und gucken, was man tun muß, um so lustige Meldungen zu bekommen...

Ach ja:
Gforth 0.7.2
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux

Bis denne,
Daniel
 

Lesen sie die antworten

#1 djc
10/06/2015 - 10:10 | Warnen spam
Am Mittwoch, 10. Juni 2015 09:52:31 UTC+2 schrieb djc:
Ich werde mal allocate instrumentieren und gucken, was man tun muß, um so lustige Meldungen zu bekommen...



Das letzte Lebenszeichen von allocate vor dem ASSERT:
############# ALLOCATE: 24 Gesamt: 67677 Aufrufe von allocate: 1254 #########

Die vorhergehenden ALLOCATES sehen plausibel aus, Rekursion oder Stacküberlauf ist nicht erkennbar.

Offenbar entsteht auch ein Prozeß, der mit dem Abschuß von gforth nicht mitgekillt wird:
7223 pts/0 S+ 0:00 gforth-itc ecore_ifoo.fs
7224 ? S 0:00 [kworker/u8:0]

Freundliche Grüße,
Daniel

Ähnliche fragen