For me this looks rather like an Avahi problem than like a CUPS problem. The assert failure happens when the last element of a list of timeouts is removed but the pointer to the list is not pointing to this element (and so not to the list, or the element is not member of the list). This timeout list (elements of type AvahiTimeout) is managed internally by Avahi, CUPS does not access them directly.
For me this looks rather like an Avahi problem than like a CUPS problem. The assert failure happens when the last element of a list of timeouts is removed but the pointer to the list is not pointing to this element (and so not to the list, or the element is not member of the list). This timeout list (elements of type AvahiTimeout) is managed internally by Avahi, CUPS does not access them directly.