Hi Anca,

It seems to work ... at least I cannot reproduce the problem anymore.
As usual, thanks a lot!

One small thing, not related to this problem ...
when inserting, you print the values in DBG mode ... except the last
two (n_query_cols - 2 ) ... why not all? See the diff

An another small thing ... this is purely my taste ... when debugging
the presence module, I found quite annoying the fact that debug
messages are split into two lines, which makes it difficult to grep
to find on which line they are ... I understand that this way they fit
the 80columns editors, but I still think they should be all in one
line ...


Index: modules/presence/subscribe.c
===================================================================
--- modules/presence/subscribe.c        (revision 1999)
+++ modules/presence/subscribe.c        (working copy)
@@ -438,23 +438,25 @@

                       DBG("PRESENCE:update_subscription:Inserting
into database:"
                               "\nn_query_cols:%d\n",n_query_cols);
-                       for(i = 0;i< n_query_cols-2; i++)
+//                     for(i = 0;i< n_query_cols-2; i++)
+                       for(i = 0;i< n_query_cols; i++)
                       {
-                               if(query_vals[i].type==DB_STR)
-                               DBG("[%d] = %s %.*s\n",i, query_cols[i],
-
query_vals[i].val.str_val.len,query_vals[i].val.str_val.s );
-                               if(query_vals[i].type==DB_INT)
+                               if(query_vals[i].type==DB_STR) {
+                                       DBG("[%d] = %s %.*s\n",i, query_cols[i],
+
query_vals[i].val.str_val.len,query_vals[i].val.str_val.s );
+                               } else if(query_vals[i].type==DB_INT) {
                                       DBG("[%d] = %s %d\n",i, query_cols[i],
                                               query_vals[i].val.int_val);
+                               } else {
+                                       DBG("[%d] = %s (unknown value
type)\n",i, query_cols[i] );
+                               }
                       }



On 4/13/07, Anca-Maria Vamanu <[EMAIL PROTECTED]> wrote:
It is probably safer to check if expired messages exist before
attempting to delete them, assuming that a query in an empty table does
not generate an error. I have added this and commited the change.
Please tell me if you encounter further errors.

Cesc wrote:

> Hi Anca,
>
> I think I have further info ...
> the crash happens for i = j = 0 ...  (2(6495) DBT:dbt_get_refs:
> looping ... i=0 (4), j=0(8))
> and the reason, i think, is when file has NO data-row ... that is:
>
> file content:
> id(int) ...... NO_RETURN
> NO_DATA_ROWS
>
> If I add just a return after the table fields definition, it seems to
> be ok ...
>
> Cesc
>
> On 4/13/07, Anca-Maria Vamanu <[EMAIL PROTECTED]> wrote:
>
>> For this problem with watchers table I can't figure where the problem
>> is. It would be very helpful if you would print the values for i and j
>> and send the result.
>>
>> Cesc wrote:
>>
>> > I think related .... in another run of openser, i got another crash
>> > ... same backtrace on gdb ...
>> >
>> > [EMAIL PROTECTED] openser.1.2]#  5(5142) PRESENCE:
>> > msg_watchers_clean:cleaning pending subscriptions
>> > 5(5142) DBT:dbt_load_file: request for table [watchers]
>> > 5(5142) DBT:dbt_load_file: db is [/cafes/openser.1.2/cafesConf/dbtext]
>> > 5(5142) DBT:dbt_load_file: loading file
>> > [/cafes/openser.1.2/cafesConf/dbtext/watchers]
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[0] is INT!
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[1] is STR!
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[2] is STR!
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[3] is STR!
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[4] is STR!
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[5] is STR!
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[6] is STR!
>> > 5(5142) DBT:dbt_load_file: state FLINE!
>> > 5(5142) DBT: column[7] is INT!
>> > 5(5142) DTB:dbt_db_get_table: watchers
>> >
>> >
>> > On 4/13/07, Cesc <[EMAIL PROTECTED]> wrote:
>> >
>> >> Hi,
>> >>
>> >> doing some progress ... still with openser1.2 and dbtext ...
>> >>
>> >> on xlite shutdown ... crash
>> >>
>> >> #0  0xb7f89e52 in dbt_get_refs (_dtp=0xb5d6c848, _k=0xbffa6ea0, _n=2)
>> >> at dbt_res.c:168
>> >> 168
>> >> if(strlen(_k[i])==_dtp->colv[j]->name.len
>> >> (gdb)
>> >> (gdb)
>> >> (gdb) bt
>> >> #0  0xb7f89e52 in dbt_get_refs (_dtp=0xb5d6c848, _k=0xbffa6ea0, _n=2)
>> >> at dbt_res.c:168
>> >> #1  0xb7f8495b in dbt_delete (_h=0x816fd98, _k=0xbffa6ea0,
>> >> _o=0xbffa6e94, _v=0xbffa6e64, _n=2) at dbt_base.c:455
>> >> #2  0xb7dba7e9 in msg_watchers_clean (ticks=100, param=0x0) at
>> >> subscribe.c:539
>> >> #3  0x080a73bf in run_timer () at timer.c:226
>> >> #4  0x0806ec11 in main_loop () at main.c:896
>> >> #5  0x080704cb in main (argc=3, argv=0xbffa7054) at main.c:1399
>> >>
>> >
>> > _______________________________________________
>> > Devel mailing list
>> > [EMAIL PROTECTED]
>> > http://openser.org/cgi-bin/mailman/listinfo/devel
>> >
>>
>>
>



_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://openser.org/cgi-bin/mailman/listinfo/devel

Reply via email to