Skip to content

Commit

Permalink
ovsdb-server: Fix memory leak using perf counter without initialization.
Browse files Browse the repository at this point in the history
perf_counter_accumulate() is invoked without perf_counters_init() being
called first, which leads to a memory leak reported by Valgrind (test
cases 104, 106, and 107). A call trace is below:
    xmalloc (util.c:112)
    shash_add_nocopy__ (shash.c:109)
    shash_add_nocopy (shash.c:121)
    shash_add (shash.c:129)
    shash_add_once (shash.c:136)
    shash_add_assert (shash.c:146)
    perf_counter_init (perf-counter.c:86)
    perf_counter_accumulate (perf-counter.c:95)
    ovsdb_txn_commit (transaction.c:850)
    ovsdb_file_open__ (file.c:217)
    open_db (ovsdb-server.c:418)
    main (ovsdb-server.c:263)

Signed-off-by: William Tu <[email protected]>
Signed-off-by: Daniele Di Proietto <[email protected]>
Co-authored-by: Daniele Di Proietto <[email protected]>
Signed-off-by: Ben Pfaff <[email protected]>
  • Loading branch information
2 people authored and blp committed Dec 23, 2015
1 parent dfb21e9 commit 7ef2811
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ Wei Li [email protected]
Wei Yongjun [email protected]
Wenyu Zhang [email protected]
William Fulton
William Tu [email protected]
YAMAMOTO Takashi [email protected]
Yasuhito Takamiya [email protected]
yinpeijun [email protected]
Expand Down
5 changes: 3 additions & 2 deletions ovsdb/ovsdb-server.c
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,9 @@ main(int argc, char *argv[])
shash_init(&all_dbs);
server_config.all_dbs = &all_dbs;
server_config.jsonrpc = jsonrpc;

perf_counters_init();

SSET_FOR_EACH (db_filename, &db_filenames) {
error = open_db(&server_config, db_filename);
if (error) {
Expand Down Expand Up @@ -297,8 +300,6 @@ main(int argc, char *argv[])

daemonize_complete();

perf_counters_init();

if (!run_command) {
/* ovsdb-server is usually a long-running process, in which case it
* makes plenty of sense to log the version, but --run makes
Expand Down

0 comments on commit 7ef2811

Please sign in to comment.