Hans-Werner Hilse wrote: > There had been a "free(aux);" added in that patch in timers.c in the > assignment operator ("=") function. Probably it didn't took an earlier > (conditional?) free() into account and such rans into a glibc-assertion. This seems to be at least one source of bugs. I've detected this with Valgrind: ==4652== Invalid free() / delete / delete[] ==4652== at 0x1B904B04: free (vg_replace_malloc.c:152) ==4652== by 0x8103F5F: cTimer::operator=(cTimer const&) (timers.c:108) ==4652== by 0x80FE349: cSVDRP::CmdMODT(char const*) (svdrp.c:1136) ==4652== by 0x81015C1: cSVDRP::Process() (svdrp.c:1563) ==4652== by 0x80B3458: cInterface::GetKey(bool) (interface.c:37) ==4652== by 0x810D919: main (vdr.c:866) ==4652== Address 0x1BEEAC90 is 0 bytes inside a block of size 63 free'd ==4652== at 0x1B904B04: free (vg_replace_malloc.c:152) ==4652== by 0x8104D6F: cTimer::Parse(char const*) (timers.c:244) ==4652== by 0x80FE493: cSVDRP::CmdMODT(char const*) (svdrp.c:1132) ==4652== by 0x81015C1: cSVDRP::Process() (svdrp.c:1563) ==4652== by 0x80B3458: cInterface::GetKey(bool) (interface.c:37) ==4652== by 0x810D919: main (vdr.c:866) However, there are also some of these: ==4652== Invalid write of size 4 ==4652== at 0x80FCA0E: cSocket::Open() (svdrp.c:69) ==4652== by 0x80FCB91: cSocket::Accept() (svdrp.c:110) ==4652== by 0x1BD13C34: ??? ==4652== by 0x1BD10F83: ??? ==4652== by 0x8103114: cThread::StartThread(cThread*) (thread.c:244) ==4652== by 0x1B935B62: start_thread (in /lib/tls/libpthread-0.60.so) ==4652== by 0x1BB28189: clone (in /lib/tls/libc-2.3.2.so) ==4652== Address 0x1F70F4A4 is 4 bytes inside a block of size 12 free'd ==4652== at 0x1B904CA8: operator delete(void*) (vg_replace_malloc.c:155) ==4652== by 0x1BD13EBA: ??? ==4652== by 0x810882D: cListBase::Clear() (tools.c:1445) ==4652== by 0x810D0B0: main (vdr.c:1226) Cheers, Udo