From: SourceForge.net <no...@so...> - 2007-08-22 13:28:58
|
Bugs item #1779416, was opened at 2007-08-22 15:28 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Kim-Minh KAPLAN (kmkaplan) Assigned to: Bruno Haible (haible) Summary: Berkeley-DB module outputs spurious error Initial Comment: After evaluating the following form: (bdb:with-dbe (env :options (:errfile "db-err.log")) (bdb:dbe-open env :create t :init-mpool t) (bdb:with-db (db env "test" :open (:type :btree :create t)) (bdb:db-put db "foo" "bar"))) the db-err.log file contains: call implies an access method which is inconsistent with previous calls This does not affect the functionnality of de module except that the error log file quickly fills up and is thus unusable. The offending code seems to be the function "record_length" in modules/berkeley-db/bdb.c. It does a call to db->get_re_len that causes an error and fills the error file. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 |
From: SourceForge.net <no...@so...> - 2007-08-22 17:40:00
|
Bugs item #1779416, was opened at 2007-08-22 15:28 Message generated for change (Comment added) made by kmkaplan You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Kim-Minh KAPLAN (kmkaplan) Assigned to: Bruno Haible (haible) Summary: Berkeley-DB module outputs spurious error Initial Comment: After evaluating the following form: (bdb:with-dbe (env :options (:errfile "db-err.log")) (bdb:dbe-open env :create t :init-mpool t) (bdb:with-db (db env "test" :open (:type :btree :create t)) (bdb:db-put db "foo" "bar"))) the db-err.log file contains: call implies an access method which is inconsistent with previous calls This does not affect the functionnality of de module except that the error log file quickly fills up and is thus unusable. The offending code seems to be the function "record_length" in modules/berkeley-db/bdb.c. It does a call to db->get_re_len that causes an error and fills the error file. ---------------------------------------------------------------------- >Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-22 19:39 Message: Logged In: YES user_id=24992 Originator: YES This fixes it for me but I am not sure this is the right thing to do. --- clisp-2.41.orig/modules/berkeley-db/bdb.c +++ clisp-2.41/modules/berkeley-db/bdb.c @@ -1325,6 +1325,12 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + DBTYPE type; + begin_system_call(); + status = db->get_type(db, &type); + end_system_call(); + if (status || type == DB_BTREE || type == DB_HASH) + return 0; begin_system_call(); status = db->get_re_len(db,&ret); end_system_call(); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 |
From: SourceForge.net <no...@so...> - 2007-08-22 17:56:47
|
Bugs item #1779416, was opened at 2007-08-22 09:28 Message generated for change (Comment added) made by sds You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Kim-Minh KAPLAN (kmkaplan) >Assigned to: Sam Steingold (sds) Summary: Berkeley-DB module outputs spurious error Initial Comment: After evaluating the following form: (bdb:with-dbe (env :options (:errfile "db-err.log")) (bdb:dbe-open env :create t :init-mpool t) (bdb:with-db (db env "test" :open (:type :btree :create t)) (bdb:db-put db "foo" "bar"))) the db-err.log file contains: call implies an access method which is inconsistent with previous calls This does not affect the functionnality of de module except that the error log file quickly fills up and is thus unusable. The offending code seems to be the function "record_length" in modules/berkeley-db/bdb.c. It does a call to db->get_re_len that causes an error and fills the error file. ---------------------------------------------------------------------- >Comment By: Sam Steingold (sds) Date: 2007-08-22 13:56 Message: Logged In: YES user_id=5735 Originator: NO thanks for the patch. you are disabling get_re_len for DB_BTREE & DB_HASH. why? http://www.oracle.com/technology/documentation/berkeley-db/db/api_c/frame.html lists DB->set_re_len under Btree/Recno, so it should work for DB_BTREE too - could you please check that? thanks! ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-22 13:39 Message: Logged In: YES user_id=24992 Originator: YES This fixes it for me but I am not sure this is the right thing to do. --- clisp-2.41.orig/modules/berkeley-db/bdb.c +++ clisp-2.41/modules/berkeley-db/bdb.c @@ -1325,6 +1325,12 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + DBTYPE type; + begin_system_call(); + status = db->get_type(db, &type); + end_system_call(); + if (status || type == DB_BTREE || type == DB_HASH) + return 0; begin_system_call(); status = db->get_re_len(db,&ret); end_system_call(); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 |
From: SourceForge.net <no...@so...> - 2007-08-23 19:45:02
|
Bugs item #1779416, was opened at 2007-08-22 15:28 Message generated for change (Comment added) made by kmkaplan You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Kim-Minh KAPLAN (kmkaplan) Assigned to: Sam Steingold (sds) Summary: Berkeley-DB module outputs spurious error Initial Comment: After evaluating the following form: (bdb:with-dbe (env :options (:errfile "db-err.log")) (bdb:dbe-open env :create t :init-mpool t) (bdb:with-db (db env "test" :open (:type :btree :create t)) (bdb:db-put db "foo" "bar"))) the db-err.log file contains: call implies an access method which is inconsistent with previous calls This does not affect the functionnality of de module except that the error log file quickly fills up and is thus unusable. The offending code seems to be the function "record_length" in modules/berkeley-db/bdb.c. It does a call to db->get_re_len that causes an error and fills the error file. ---------------------------------------------------------------------- >Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-23 21:44 Message: Logged In: YES user_id=24992 Originator: YES Mmm, you're right this is bogus. That's why I said that I am not sure it is the right thing. Here is an alternative kludge. But it still smells bad. At least it as the same relent as the neighbourhooding code that muffles the error message. @@ -1325,8 +1333,13 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + FILE *errfile; begin_system_call(); + db->get_errfile(db, &errfile); + db->set_errfile(db, 0); status = db->get_re_len(db,&ret); + if (errfile) + db->set_errfile(db, errfile); end_system_call(); if (status) { error_message_reset(); ---------------------------------------------------------------------- Comment By: Sam Steingold (sds) Date: 2007-08-22 19:56 Message: Logged In: YES user_id=5735 Originator: NO thanks for the patch. you are disabling get_re_len for DB_BTREE & DB_HASH. why? http://www.oracle.com/technology/documentation/berkeley-db/db/api_c/frame.html lists DB->set_re_len under Btree/Recno, so it should work for DB_BTREE too - could you please check that? thanks! ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-22 19:39 Message: Logged In: YES user_id=24992 Originator: YES This fixes it for me but I am not sure this is the right thing to do. --- clisp-2.41.orig/modules/berkeley-db/bdb.c +++ clisp-2.41/modules/berkeley-db/bdb.c @@ -1325,6 +1325,12 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + DBTYPE type; + begin_system_call(); + status = db->get_type(db, &type); + end_system_call(); + if (status || type == DB_BTREE || type == DB_HASH) + return 0; begin_system_call(); status = db->get_re_len(db,&ret); end_system_call(); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 |
From: SourceForge.net <no...@so...> - 2007-08-23 20:02:00
|
Bugs item #1779416, was opened at 2007-08-22 09:28 Message generated for change (Comment added) made by sds You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Kim-Minh KAPLAN (kmkaplan) Assigned to: Sam Steingold (sds) Summary: Berkeley-DB module outputs spurious error Initial Comment: After evaluating the following form: (bdb:with-dbe (env :options (:errfile "db-err.log")) (bdb:dbe-open env :create t :init-mpool t) (bdb:with-db (db env "test" :open (:type :btree :create t)) (bdb:db-put db "foo" "bar"))) the db-err.log file contains: call implies an access method which is inconsistent with previous calls This does not affect the functionnality of de module except that the error log file quickly fills up and is thus unusable. The offending code seems to be the function "record_length" in modules/berkeley-db/bdb.c. It does a call to db->get_re_len that causes an error and fills the error file. ---------------------------------------------------------------------- >Comment By: Sam Steingold (sds) Date: 2007-08-23 16:01 Message: Logged In: YES user_id=5735 Originator: NO no, this is totally wrong. the original patch from 2007-08-22 13:39 is almost correct though. we just need to figure out the specific DB types for which db->get_re_len is invalid. ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-23 15:44 Message: Logged In: YES user_id=24992 Originator: YES Mmm, you're right this is bogus. That's why I said that I am not sure it is the right thing. Here is an alternative kludge. But it still smells bad. At least it as the same relent as the neighbourhooding code that muffles the error message. @@ -1325,8 +1333,13 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + FILE *errfile; begin_system_call(); + db->get_errfile(db, &errfile); + db->set_errfile(db, 0); status = db->get_re_len(db,&ret); + if (errfile) + db->set_errfile(db, errfile); end_system_call(); if (status) { error_message_reset(); ---------------------------------------------------------------------- Comment By: Sam Steingold (sds) Date: 2007-08-22 13:56 Message: Logged In: YES user_id=5735 Originator: NO thanks for the patch. you are disabling get_re_len for DB_BTREE & DB_HASH. why? http://www.oracle.com/technology/documentation/berkeley-db/db/api_c/frame.html lists DB->set_re_len under Btree/Recno, so it should work for DB_BTREE too - could you please check that? thanks! ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-22 13:39 Message: Logged In: YES user_id=24992 Originator: YES This fixes it for me but I am not sure this is the right thing to do. --- clisp-2.41.orig/modules/berkeley-db/bdb.c +++ clisp-2.41/modules/berkeley-db/bdb.c @@ -1325,6 +1325,12 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + DBTYPE type; + begin_system_call(); + status = db->get_type(db, &type); + end_system_call(); + if (status || type == DB_BTREE || type == DB_HASH) + return 0; begin_system_call(); status = db->get_re_len(db,&ret); end_system_call(); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 |
From: SourceForge.net <no...@so...> - 2007-08-24 09:04:29
|
Bugs item #1779416, was opened at 2007-08-22 15:28 Message generated for change (Comment added) made by kmkaplan You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Kim-Minh KAPLAN (kmkaplan) Assigned to: Sam Steingold (sds) Summary: Berkeley-DB module outputs spurious error Initial Comment: After evaluating the following form: (bdb:with-dbe (env :options (:errfile "db-err.log")) (bdb:dbe-open env :create t :init-mpool t) (bdb:with-db (db env "test" :open (:type :btree :create t)) (bdb:db-put db "foo" "bar"))) the db-err.log file contains: call implies an access method which is inconsistent with previous calls This does not affect the functionnality of de module except that the error log file quickly fills up and is thus unusable. The offending code seems to be the function "record_length" in modules/berkeley-db/bdb.c. It does a call to db->get_re_len that causes an error and fills the error file. ---------------------------------------------------------------------- >Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-24 11:04 Message: Logged In: YES user_id=24992 Originator: YES I have not seen anything in the documentation that specifically says when DB->get_re_len is valid or not. The only portable way of doing it is to call the function and trap the error as is done in the source. On the other hand, looking at the source code gives in btree/bt_method.c: DB_ILLEGAL_METHOD(dbp, DB_OK_QUEUE | DB_OK_RECNO) For the RPC client/server mode I do not see how one can know. ---------------------------------------------------------------------- Comment By: Sam Steingold (sds) Date: 2007-08-23 22:01 Message: Logged In: YES user_id=5735 Originator: NO no, this is totally wrong. the original patch from 2007-08-22 13:39 is almost correct though. we just need to figure out the specific DB types for which db->get_re_len is invalid. ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-23 21:44 Message: Logged In: YES user_id=24992 Originator: YES Mmm, you're right this is bogus. That's why I said that I am not sure it is the right thing. Here is an alternative kludge. But it still smells bad. At least it as the same relent as the neighbourhooding code that muffles the error message. @@ -1325,8 +1333,13 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + FILE *errfile; begin_system_call(); + db->get_errfile(db, &errfile); + db->set_errfile(db, 0); status = db->get_re_len(db,&ret); + if (errfile) + db->set_errfile(db, errfile); end_system_call(); if (status) { error_message_reset(); ---------------------------------------------------------------------- Comment By: Sam Steingold (sds) Date: 2007-08-22 19:56 Message: Logged In: YES user_id=5735 Originator: NO thanks for the patch. you are disabling get_re_len for DB_BTREE & DB_HASH. why? http://www.oracle.com/technology/documentation/berkeley-db/db/api_c/frame.html lists DB->set_re_len under Btree/Recno, so it should work for DB_BTREE too - could you please check that? thanks! ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-22 19:39 Message: Logged In: YES user_id=24992 Originator: YES This fixes it for me but I am not sure this is the right thing to do. --- clisp-2.41.orig/modules/berkeley-db/bdb.c +++ clisp-2.41/modules/berkeley-db/bdb.c @@ -1325,6 +1325,12 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + DBTYPE type; + begin_system_call(); + status = db->get_type(db, &type); + end_system_call(); + if (status || type == DB_BTREE || type == DB_HASH) + return 0; begin_system_call(); status = db->get_re_len(db,&ret); end_system_call(); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 |
From: SourceForge.net <no...@so...> - 2007-08-24 19:09:45
|
Bugs item #1779416, was opened at 2007-08-22 09:28 Message generated for change (Comment added) made by sds You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: modules Group: None >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Kim-Minh KAPLAN (kmkaplan) Assigned to: Sam Steingold (sds) Summary: Berkeley-DB module outputs spurious error Initial Comment: After evaluating the following form: (bdb:with-dbe (env :options (:errfile "db-err.log")) (bdb:dbe-open env :create t :init-mpool t) (bdb:with-db (db env "test" :open (:type :btree :create t)) (bdb:db-put db "foo" "bar"))) the db-err.log file contains: call implies an access method which is inconsistent with previous calls This does not affect the functionnality of de module except that the error log file quickly fills up and is thus unusable. The offending code seems to be the function "record_length" in modules/berkeley-db/bdb.c. It does a call to db->get_re_len that causes an error and fills the error file. ---------------------------------------------------------------------- >Comment By: Sam Steingold (sds) Date: 2007-08-24 15:09 Message: Logged In: YES user_id=5735 Originator: NO test suite now checks that there are no message in the log files ---------------------------------------------------------------------- Comment By: Sam Steingold (sds) Date: 2007-08-24 15:09 Message: Logged In: YES user_id=5735 Originator: NO thank you for your bug report. the bug has been fixed in the CVS tree. you can either wait for the next release (recommended) or check out the current CVS tree (see http://clisp.cons.org) and build CLISP from the sources (be advised that between releases the CVS tree is very unstable and may not even build on your platform). ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-24 05:04 Message: Logged In: YES user_id=24992 Originator: YES I have not seen anything in the documentation that specifically says when DB->get_re_len is valid or not. The only portable way of doing it is to call the function and trap the error as is done in the source. On the other hand, looking at the source code gives in btree/bt_method.c: DB_ILLEGAL_METHOD(dbp, DB_OK_QUEUE | DB_OK_RECNO) For the RPC client/server mode I do not see how one can know. ---------------------------------------------------------------------- Comment By: Sam Steingold (sds) Date: 2007-08-23 16:01 Message: Logged In: YES user_id=5735 Originator: NO no, this is totally wrong. the original patch from 2007-08-22 13:39 is almost correct though. we just need to figure out the specific DB types for which db->get_re_len is invalid. ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-23 15:44 Message: Logged In: YES user_id=24992 Originator: YES Mmm, you're right this is bogus. That's why I said that I am not sure it is the right thing. Here is an alternative kludge. But it still smells bad. At least it as the same relent as the neighbourhooding code that muffles the error message. @@ -1325,8 +1333,13 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + FILE *errfile; begin_system_call(); + db->get_errfile(db, &errfile); + db->set_errfile(db, 0); status = db->get_re_len(db,&ret); + if (errfile) + db->set_errfile(db, errfile); end_system_call(); if (status) { error_message_reset(); ---------------------------------------------------------------------- Comment By: Sam Steingold (sds) Date: 2007-08-22 13:56 Message: Logged In: YES user_id=5735 Originator: NO thanks for the patch. you are disabling get_re_len for DB_BTREE & DB_HASH. why? http://www.oracle.com/technology/documentation/berkeley-db/db/api_c/frame.html lists DB->set_re_len under Btree/Recno, so it should work for DB_BTREE too - could you please check that? thanks! ---------------------------------------------------------------------- Comment By: Kim-Minh KAPLAN (kmkaplan) Date: 2007-08-22 13:39 Message: Logged In: YES user_id=24992 Originator: YES This fixes it for me but I am not sure this is the right thing to do. --- clisp-2.41.orig/modules/berkeley-db/bdb.c +++ clisp-2.41/modules/berkeley-db/bdb.c @@ -1325,6 +1325,12 @@ static u_int32_t record_length (DB *db) { u_int32_t ret; int status; + DBTYPE type; + begin_system_call(); + status = db->get_type(db, &type); + end_system_call(); + if (status || type == DB_BTREE || type == DB_HASH) + return 0; begin_system_call(); status = db->get_re_len(db,&ret); end_system_call(); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101355&aid=1779416&group_id=1355 |