This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
RE: CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD value
- From: "Steven Clugston" <Steven dot Clugston at newcastle dot ac dot uk>
- To: <ecos-discuss at ecos dot sourceware dot org>
- Date: Fri, 25 Aug 2006 09:41:05 +0100
- Subject: [ECOS] RE: CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD value
>-----Original Message-----
>From: ecos-discuss-owner@ecos.sourceware.org
>[mailto:ecos-discuss-owner@ecos.sourceware.org] On Behalf Of Siva Kumar
>Sent: 23 August 2006 15:50
>To: eCos Discussion
>Subject: [ECOS] CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD value
>
>
>I took the latest CVS code base and built ecos. But with
>assertions enabled, I'm running into assertion on cxxsupp.cxx
>test case wherein the condition :
>
>CYG_ASSERT(counter < CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD, "Do
>you want an empty delete function?");
>
>is failing in the first delete call itself (counter value is
>1). In the ecos library [include/pkgconf/infra.h], I saw that
>the value of CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD is just '1'
>and not 100 as the descriptions say. Hence the assertion!
>
>In the infra.cdl, when I changed the flavor of the above macro
>to data, the ecc file was generated as needed with the value
>of the macro as default (100). With this ecc, when I built the
>target file, assertion never happened. Why is
>CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD,
>a boolean instead of data, if it has to take a value of 100 by
>default? Pls shed some light.
>
>Regards
>Siv
I've had this assert also.
I get in the generated: <include/pkgconf/infra.h>
#define CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD 1
And in the generated eec:
cdl_option CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD {
# ActiveIf constraint: CYGPKG_INFRA_DEBUG
# CYGPKG_INFRA_DEBUG == 1
# --> 1
# Flavor: bool
# No user value, uncomment the following line to provide one.
# user_value 1
# value_source default
# Default value: 1
};
infra.cdl:
cdl_option CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD {
display "Threshold for valid number of delete calls"
default_value 100
active_if CYGPKG_INFRA_DEBUG
description "
Some users don't know about the empty delete function and
then
wonder why their C++ classes are leaking memory. If
INFRA_DEBUG is enabled we keep a counter for the number of
times delete is called. If it goes above this threshold we
throw
an assertion failure. This should point heavy users of
delete in the right direction without upsetting those who
want
an empty delete function. "
}
Just to clarify, did you change the above to:
cdl_option CYGNUM_INFRA_EMPTY_DELETE_THRESHOLD {
display "Threshold for valid number of delete calls"
flavor data
default_value 100
active_if CYGPKG_INFRA_DEBUG
description "
Some users don't know about the empty delete function and
then
wonder why their C++ classes are leaking memory. If
INFRA_DEBUG is enabled we keep a counter for the number of
times delete is called. If it goes above this threshold we
throw
an assertion failure. This should point heavy users of
delete in the right direction without upsetting those who
want
an empty delete function. "
}
Looks like the default flavor is bool and the flavor data was omitted
from infra.cdl. Can this be patched so future cvs snapshots are
corrected?
Regards
Steven
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss