Discussion:
[Proftpd-devel] API test failure (pool.c) building 1.3.4rc1 for CentOS 5 (i386)
(too old to reply)
Paul Howarth
2010-12-23 13:59:17 UTC
Permalink
Strangely I'm not seeing this on x86_64. Anyway, I think the fix is
trivial (see below).

$ ./api-tests
Running suite(s): pool
array
str
sets
timers
table
var
event
env
version
feat
netaddr
netacl
class
regexp
expr
scoreboard
stash
modules
99%: Checks: 144, Failures: 1, Errors: 0
api/pool.c:122:F:base:pcalloc_test:0: Allocated non-zero memory at
position 0
-------------------------------------------------
FAILED 1 test
Please send email to:
proftp-***@lists.sourceforge.net
containing the `api-tests.log' file (in the tests/ directory)
and the output from running `proftpd -V'
-------------------------------------------------
make: Leaving directory `/builddir/build/BUILD/proftpd-1.3.4rc1/tests'
make: *** [api-tests] Error 1

$ cat tests/api-tests.log
Running suite pool
api/pool.c:36:P:base:parent_pool_test:0: Passed
api/pool.c:49:P:base:parent_sub_pool_test:0: Passed
api/pool.c:74:P:base:pool_create_sz_test:0: Passed
api/pool.c:99:P:base:palloc_test:0: Passed
api/pool.c:122:F:base:pcalloc_test:0: Allocated non-zero memory at
position 0
Running suite array
api/array.c:79:P:base:make_array_test:0: Passed
api/array.c:119:P:base:push_array_test:0: Passed
api/array.c:163:P:base:array_cat_test:0: Passed
api/array.c:189:P:base:clear_array_test:0: Passed
api/array.c:220:P:base:copy_array_test:0: Passed
api/array.c:263:P:base:copy_array_str_test:0: Passed
api/array.c:313:P:base:copy_array_hdr_test:0: Passed
api/array.c:384:P:base:append_arrays_test:0: Passed
Running suite str
api/str.c:99:P:base:sstrncpy_test:0: Passed
api/str.c:169:P:base:sstrcat_test:0: Passed
api/str.c:218:P:base:sreplace_test:0: Passed
api/str.c:233:P:base:sreplace_enospc_test:0: Passed
api/str.c:275:P:base:pdircat_test:0: Passed
api/str.c:309:P:base:pstrcat_test:0: Passed
api/str.c:332:P:base:pstrdup_test:0: Passed
api/str.c:367:P:base:pstrndup_test:0: Passed
api/str.c:412:P:base:strip_test:0: Passed
api/str.c:456:P:base:strip_end_test:0: Passed
api/str.c:499:P:base:get_token_test:0: Passed
api/str.c:572:P:base:get_word_test:0: Passed
api/str.c:611:P:base:is_boolean_test:0: Passed
api/str.c:659:P:base:is_fnmatch_test:0: Passed
Running suite sets
api/sets.c:119:P:base:set_create_test:0: Passed
api/sets.c:170:P:base:set_insert_test:0: Passed
api/sets.c:221:P:base:set_insert_end_test:0: Passed
api/sets.c:310:P:base:set_insert_sort_test:0: Passed
api/sets.c:393:P:base:set_remove_test:0: Passed
api/sets.c:444:P:base:set_copy_test:0: Passed
Running suite timers
api/timers.c:134:P:base:timer_add_test:0: Passed
api/timers.c:156:P:base:timer_remove_test:0: Passed
api/timers.c:182:P:base:timer_remove_multi_test:0: Passed
api/timers.c:228:P:base:timer_reset_test:0: Passed
api/timers.c:247:P:base:timer_sleep_test:0: Passed
Running suite table
api/table.c:76:P:base:table_alloc_test:0: Passed
api/table.c:92:P:base:table_nalloc_test:0: Passed
api/table.c:120:P:base:table_add_test:0: Passed
api/table.c:148:P:base:table_add_dup_test:0: Passed
api/table.c:178:P:base:table_count_test:0: Passed
api/table.c:218:P:base:table_exists_test:0: Passed
api/table.c:245:P:base:table_empty_test:0: Passed
api/table.c:268:P:base:table_free_test:0: Passed
api/table.c:313:P:base:table_get_test:0: Passed
api/table.c:367:P:base:table_get_use_cache_test:0: Passed
api/table.c:396:P:base:table_next_test:0: Passed
api/table.c:434:P:base:table_rewind_test:0: Passed
api/table.c:476:P:base:table_remove_test:0: Passed
api/table.c:516:P:base:table_set_test:0: Passed
api/table.c:551:P:base:table_do_test:0: Passed
api/table.c:598:P:base:table_ctl_test:0: Passed
api/table.c:602:P:base:table_dump_test:0: Passed
api/table.c:634:P:base:table_pcalloc_test:0: Passed
Running suite var
api/var.c:128:P:base:var_set_test:0: Passed
api/var.c:160:P:base:var_delete_test:0: Passed
api/var.c:188:P:base:var_exists_test:0: Passed
api/var.c:226:P:base:var_get_test:0: Passed
api/var.c:253:P:base:var_next_test:0: Passed
api/var.c:291:P:base:var_rewind_test:0: Passed
Running suite event
api/event.c:94:P:base:event_register_test:0: Passed
api/event.c:129:P:base:event_unregister_test:0: Passed
api/event.c:165:P:base:event_generate_test:0: Passed
api/event.c:198:P:base:event_dump_test:0: Passed
Running suite env
api/env.c:71:P:base:env_get_test:0: Passed
api/env.c:118:P:base:env_set_test:0: Passed
api/env.c:150:P:base:env_unset_test:0: Passed
Running suite version
api/version.c:38:P:base:version_get_module_api_number_test:0: Passed
api/version.c:48:P:base:version_get_number_test:0: Passed
api/version.c:58:P:base:version_get_str_test:0: Passed
Running suite feat
api/feat.c:67:P:base:feat_add_test:0: Passed
api/feat.c:88:P:base:feat_get_test:0: Passed
api/feat.c:108:P:base:feat_get_next_test:0: Passed
api/feat.c:133:P:base:feat_remove_test:0: Passed
Running suite netaddr
api/netaddr.c:63:P:base:netaddr_alloc_test:0: Passed
api/netaddr.c:87:P:base:netaddr_dup_test:0: Passed
api/netaddr.c:101:P:base:netaddr_clear_test:0: Passed
api/netaddr.c:142:P:base:netaddr_get_addr_test:0: Passed
api/netaddr.c:160:P:base:netaddr_get_family_test:0: Passed
api/netaddr.c:185:P:base:netaddr_set_family_test:0: Passed
api/netaddr.c:189:P:base:netaddr_cmp_test:0: Passed
api/netaddr.c:193:P:base:netaddr_ncmp_test:0: Passed
api/netaddr.c:197:P:base:netaddr_fnmatch_test:0: Passed
api/netaddr.c:201:P:base:netaddr_get_sockaddr_test:0: Passed
api/netaddr.c:205:P:base:netaddr_get_sockaddr_len_test:0: Passed
api/netaddr.c:209:P:base:netaddr_set_sockaddr_test:0: Passed
api/netaddr.c:213:P:base:netaddr_set_sockaddr_any_test:0: Passed
api/netaddr.c:217:P:base:netaddr_get_inaddr_test:0: Passed
api/netaddr.c:221:P:base:netaddr_get_inaddr_len_test:0: Passed
api/netaddr.c:243:P:base:netaddr_get_port_test:0: Passed
api/netaddr.c:270:P:base:netaddr_set_port_test:0: Passed
api/netaddr.c:281:P:base:netaddr_set_reverse_dns_test:0: Passed
api/netaddr.c:338:P:base:netaddr_get_dnsstr_test:0: Passed
api/netaddr.c:363:P:base:netaddr_get_ipstr_test:0: Passed
api/netaddr.c:393:P:base:netaddr_validate_dns_str_test:0: Passed
api/netaddr.c:409:P:base:netaddr_get_localaddr_str_test:0: Passed
api/netaddr.c:413:P:base:netaddr_is_v4mappedv6_test:0: Passed
api/netaddr.c:431:P:base:netaddr_disable_ipv6_test:0: Passed
api/netaddr.c:442:P:base:netaddr_enable_ipv6_test:0: Passed
Running suite netacl
api/netacl.c:227:P:base:netacl_create_test:0: Passed
api/netacl.c:372:P:base:netacl_get_str_test:0: Passed
api/netacl.c:399:P:base:netacl_dup_test:0: Passed
api/netacl.c:548:P:base:netacl_match_test:0: Passed
api/netacl.c:570:P:base:netacl_get_negated_test:0: Passed
Running suite class
api/class.c:78:P:base:class_open_test:0: Passed
api/class.c:102:P:base:class_add_acl_test:0: Passed
api/class.c:136:P:base:class_close_test:0: Passed
api/class.c:158:P:base:class_set_satisfy_test:0: Passed
api/class.c:193:P:base:class_get_test:0: Passed
api/class.c:233:P:base:class_find_test:0: Passed
api/class.c:435:P:base:class_match_addr_test:0: Passed
Running suite regexp
api/regexp.c:54:P:base:regexp_alloc_test:0: Passed
api/regexp.c:64:P:base:regexp_free_test:0: Passed
Running suite expr
api/expr.c:146:P:base:expr_create_test:0: Passed
api/expr.c:191:P:base:expr_eval_class_and_test:0: Passed
api/expr.c:239:P:base:expr_eval_class_or_test:0: Passed
api/expr.c:282:P:base:expr_eval_group_and_test:0: Passed
api/expr.c:329:P:base:expr_eval_group_or_test:0: Passed
api/expr.c:356:P:base:expr_eval_user_and_test:0: Passed
api/expr.c:386:P:base:expr_eval_user_or_test:0: Passed
Running suite scoreboard
api/scoreboard.c:56:P:base:scoreboard_get_test:0: Passed
api/scoreboard.c:127:P:base:scoreboard_set_test:0: Passed
api/scoreboard.c:139:P:base:scoreboard_open_close_test:0: Passed
api/scoreboard.c:255:P:base:scoreboard_delete_test:0: Passed
api/scoreboard.c:331:P:base:scoreboard_restore_test:0: Passed
api/scoreboard.c:406:P:base:scoreboard_rewind_test:0: Passed
api/scoreboard.c:482:P:base:scoreboard_scrub_test:0: Passed
api/scoreboard.c:574:P:base:scoreboard_get_daemon_pid_test:0: Passed
api/scoreboard.c:655:P:base:scoreboard_get_daemon_uptime_test:0: Passed
api/scoreboard.c:737:P:base:scoreboard_entry_add_test:0: Passed
api/scoreboard.c:831:P:base:scoreboard_entry_del_test:0: Passed
api/scoreboard.c:956:P:base:scoreboard_entry_read_test:0: Passed
api/scoreboard.c:1071:P:base:scoreboard_entry_get_test:0: Passed
api/scoreboard.c:1186:P:base:scoreboard_entry_update_test:0: Passed
Running suite stash
api/stash.c:107:P:stash:stash_add_symbol_test:0: Passed
api/stash.c:202:P:stash:stash_get_symbol_test:0: Passed
api/stash.c:267:P:stash:stash_remove_symbol_test:0: Passed
Running suite modules
api/modules.c:79:P:module:module_exists_test:0: Passed
api/modules.c:113:P:module:module_get_test:0: Passed
api/modules.c:161:P:module:module_load_test:0: Passed
api/modules.c:196:P:module:module_unload_test:0: Passed
api/modules.c:251:P:module:module_call_test:0: Passed
Results for all suites run:
99%: Checks: 144, Failures: 1, Errors: 0

$ ./proftpd -V
Compile-time Settings:
Version: 1.3.4rc1 (devel)
Platform: LINUX [Linux 2.6.35.6-48.fc14.x86_64 i686]
Built: Thu Dec 23 2010 13:21:59 GMT
Built With:
configure '--build=i686-redhat-linux-gnu'
'--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu'
'--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr'
'--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc'
'--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib'
'--libexecdir=/usr/libexec' '--localstatedir=/var'
'--sharedstatedir=/usr/com' '--mandir=/usr/share/man'
'--infodir=/usr/share/info' '--libexecdir=/usr/libexec/proftpd'
'--localstatedir=/var/run/proftpd' '--enable-ctrls' '--enable-dso'
'--enable-facl' '--enable-ipv6' '--enable-nls' '--enable-openssl'
'--enable-shadow' '--enable-tests' '--with-libraries=/usr/lib/mysql'
'--with-includes=/usr/include/mysql:/usr/kerberos/include'
'--with-modules=mod_readme:mod_auth_pam:mod_tls:mod_vroot'
'--with-shared=mod_sql:mod_sql_passwd:mod_sql_mysql:mod_sql_postgres:mod_quotatab:mod_quotatab_file:mod_quotatab_ldap:mod_quotatab_radius:mod_quotatab_sql:mod_ldap:mod_ban:mod_wrap:mod_ctrls_admin:mod_facl:mod_load:mod_radius:mod_ratio:mod_rewrite:mod_site_misc:mod_exec:mod_shaper:mod_geoip:mod_wrap2:mod_wrap2_file:mod_wrap2_sql:mod_copy:mod_deflate:mod_ifversion:mod_qos:mod_sftp:mod_sftp_pam:mod_sftp_sql:mod_tls_shmcache:mod_ifsession'
'build_alias=i686-redhat-linux-gnu' 'host_alias=i686-redhat-linux-gnu'
'target_alias=i386-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic
-fasynchronous-unwind-tables'
CFLAGS: -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
-fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386
-mtune=generic -fasynchronous-unwind-tables -Wall
LDFLAGS: -L$(top_srcdir)/lib -L/usr/lib/mysql -L/usr/lib/mysql
-L/usr/lib -L/usr/lib
LIBS: -lacl -lssl -lcrypto -lssl -lcrypto -lcap -lssl -lcrypto
-lpam -lsupp -lcrypt -ldl -ldl
Files:
Configuration File:
/etc/proftpd.conf
Pid File:
/var/run/proftpd/proftpd.pid
Scoreboard File:
/var/run/proftpd/proftpd.scoreboard
Header Directory:
/usr/include/proftpd
Shared Module Directory:
/usr/libexec/proftpd
Features:
- Autoshadow support
+ Controls support
+ curses support
- Developer support
+ DSO support
+ IPv6 support
+ Largefile support
- Lastlog support
- Memcache support
+ ncursesw support
+ NLS support
+ OpenSSL support
+ POSIX ACL support
+ Shadow file support
+ Sendfile support
+ Trace support
Tunable Options:
PR_TUNABLE_BUFFER_SIZE = 1024
PR_TUNABLE_GLOBBING_MAX_MATCHES = 100000
PR_TUNABLE_GLOBBING_MAX_RECURSION = 8
PR_TUNABLE_HASH_TABLE_SIZE = 40
PR_TUNABLE_NEW_POOL_SIZE = 512
PR_TUNABLE_SCOREBOARD_BUFFER_SIZE = 80
PR_TUNABLE_SCOREBOARD_SCRUB_TIMER = 30
PR_TUNABLE_SELECT_TIMEOUT = 30
PR_TUNABLE_TIMEOUTIDENT = 10
PR_TUNABLE_TIMEOUTIDLE = 600
PR_TUNABLE_TIMEOUTLINGER = 30
PR_TUNABLE_TIMEOUTLOGIN = 300
PR_TUNABLE_TIMEOUTNOXFER = 300
PR_TUNABLE_TIMEOUTSTALLED = 3600
PR_TUNABLE_XFER_SCOREBOARD_UPDATES = 10

I believe this failure is due to a palloc() at line 119 that should be a
pcalloc():

--- proftpd-1.3.4rc1/tests/api/pool.c.orig
+++ proftpd-1.3.4rc1/tests/api/pool.c.new
@@ -116,7 +116,7 @@
fail_unless(v == NULL, "Allocated %u-len memory", sz);

sz = 1;
- v = palloc(p, sz);
+ v = pcalloc(p, sz);
fail_if(v == NULL, "Failed to allocate %u-len memory", sz);
for (i = 0; i < sz; i++) {
fail_unless(v[i] == 0, "Allocated non-zero memory at position %u", i);

Cheers, Paul.
TJ Saunders
2010-12-23 19:17:52 UTC
Permalink
Post by Paul Howarth
Strangely I'm not seeing this on x86_64. Anyway, I think the fix is
trivial (see below).
Strange indeed. In the palloc() case, the results will depend on the
behavior of the underlying malloc() implementation.

In any case, the fix is correct; I've applied the change to CVS.

Thanks!
TJ

Loading...