> 
> On Wed, Jan 24, 2001 at 03:15:48PM -0600, Kevin Day wrote:
> 
> Does this only occur when more than one client is accessing the table
> in question? If so, it's a thread-related problem that has been with
> us since FreeBSD 3.x. :-(
> 
> It looks like what I've seen before.
> 
> I have a re-produceable case that I sent to one of the MySQL
> developers and he was able to see the problem. Tracing it down,
> however, requires someone who knows a lot about FreeBSD threading.
> 
> I've found some FreeBSD gurus here who might be able to help. I just
> need a MySQL developer to point them at...
> 

Well, I did find something interesting... Right now, I crashed in thread #1:

* 1 process 48183, thread 1  0x282c835c in bcopy () from /usr/lib/libc_r.so.4


with the trace:

#0  0x282c835c in bcopy () from /usr/lib/libc_r.so.4
#1  0x282da0a8 in _thread_autoinit_dummy_decl () from /usr/lib/libc_r.so.4
#2  0x282c9cca in __dtoa () from /usr/lib/libc_r.so.4
#3  0x282c7b3b in vfprintf () from /usr/lib/libc_r.so.4
#4  0x282c5c56 in vfprintf () from /usr/lib/libc_r.so.4
#5  0x282b74cd in sprintf () from /usr/lib/libc_r.so.4
#6  0x806a779 in Field_float::val_str (this=0x8f6bcb8, val_buffer=0xbf68b30c, 
val_ptr=0xbf68b30c) at field.cc:1849
#7  0x80671dd in Field::send (this=0x8f6bcb8, packet=0x8a2b420) at field.cc:257
#8  0x814ae5f in Item_field::send (this=0x8adab60, str_arg=0x8a2b420) at item.h:119
#9  0x8072612 in select_send::send_data (this=0x8ada6a8, items=@0x8a2b24c) at 
sql_class.cc:236
#10 0x80a9207 in end_send (join=0xbf68b75c, join_tab=0x8c88868, end_of_records=false) 
at sql_select.cc:4521
#11 0x80a7bc9 in sub_select (join=0xbf68b75c, join_tab=0x8c88750, 
end_of_records=false) at sql_select.cc:4033
#12 0x80a7666 in do_select (join=0xbf68b75c, fields=0x8a2b24c, table=0x0, 
procedure=0x0) at sql_select.cc:3925
#13 0x809c82f in mysql_select (thd=0x8a2b000, tables=0x8ada0d8, fields=@0x8a2b24c, 
conds=0x8ada5c8, ftfuncs=@0x8a2b280, 
    order=0x8ada688, group=0x0, having=0x0, proc_param=0x0, select_options=8950784, 
result=0x8ada6a8) at sql_select.cc:755
#14 0x8082331 in mysql_execute_command () at sql_parse.cc:957
#15 0x808561f in mysql_parse (thd=0x8a2b000, 
    inBuf=0x8ada010 "SELECT * FROM cp WHERE C11=1 && C12>=1.0 && C13>=1.0 && PL1 > 0 
ORDER BY C4 DESC", length=80)
    at sql_parse.cc:2085
#16 0x8081634 in do_command (thd=0x8a2b000) at sql_parse.cc:668
#17 0x8080938 in handle_one_connection (arg=0x8a2b000) at sql_parse.cc:403
#18 0x2825b9a7 in _thread_start () from /usr/lib/libc_r.so.4
#19 0xbf933ffc in ?? ()
#20 0x28292f99 in select () from /usr/lib/libc_r.so.4
#21 0x807d01d in handle_connections_sockets (arg=0x0) at mysqld.cc:2099
#22 0x807c440 in main (argc=9, argv=0x81d7228) at mysqld.cc:1830
#23 0x804b2fd in _start ()
        Using the running image of child process 48183, thread 1.
Program stopped at 0x282c835c.
It stopped with signal SIGSEGV, Segmentation fault.



Notice frame #2.


If I look at other threads, I see this:

100 process 48183, thread 100  0x282ca140 in __dtoa () from /usr/lib/libc_r.so.4

#0  0x282ca140 in __dtoa () from /usr/lib/libc_r.so.4
#1  0x282c7b3b in vfprintf () from /usr/lib/libc_r.so.4
#2  0x282c5c56 in vfprintf () from /usr/lib/libc_r.so.4
#3  0x282b74cd in sprintf () from /usr/lib/libc_r.so.4
#4  0x806a779 in Field_float::val_str (this=0x90d3448, val_buffer=0xbf9cc30c, 
val_ptr=0xbf9cc30c) at field.cc:1849
#5  0x80671dd in Field::send (this=0x90d3448, packet=0x8ba0420) at field.cc:257
#6  0x814ae5f in Item_field::send (this=0x92d4ac0, str_arg=0x8ba0420) at item.h:119
#7  0x8072612 in select_send::send_data (this=0x92d46a8, items=@0x8ba024c) at 
sql_class.cc:236
#8  0x80a9207 in end_send (join=0xbf9cc75c, join_tab=0x8bc5868, end_of_records=false) 
at sql_select.cc:4521
#9  0x80a7bc9 in sub_select (join=0xbf9cc75c, join_tab=0x8bc5750, 
end_of_records=false) at sql_select.cc:4033
#10 0x80a7666 in do_select (join=0xbf9cc75c, fields=0x8ba024c, table=0x0, 
procedure=0x0) at sql_select.cc:3925
#11 0x809c82f in mysql_select (thd=0x8ba0000, tables=0x92d40d8, fields=@0x8ba024c, 
conds=0x92d45c8, ftfuncs=@0x8ba0280,
    order=0x92d4688, group=0x0, having=0x0, proc_param=0x0, select_options=8950784, 
result=0x92d46a8) at sql_select.cc:755
#12 0x8082331 in mysql_execute_command () at sql_parse.cc:957
#13 0x808561f in mysql_parse (thd=0x8ba0000,
    inBuf=0x92d4010 "SELECT * FROM cp WHERE C11=1 && C12>=1.0 && C13>=1.0 && PL1 > 0 
ORDER BY C4 DESC", length=80)
    at sql_parse.cc:2085
#14 0x8081634 in do_command (thd=0x8ba0000) at sql_parse.cc:668
#15 0x8080938 in handle_one_connection (arg=0x8ba0000) at sql_parse.cc:403
#16 0x2825b9a7 in _thread_start () from /usr/lib/libc_r.so.4
#17 0xbf7f0ffc in ?? ()
#18 0x28292f99 in select () from /usr/lib/libc_r.so.4
#19 0x807d01d in handle_connections_sockets (arg=0x0) at mysqld.cc:2099
#20 0x807c440 in main (argc=9, argv=0x81d7228) at mysqld.cc:1830
#21 0x804b2fd in _start ()


Is something with sprintf/dtoa not being done in a reentrant/thread-safe
manner? If I look at what's happening with sprintf there, everything mysql
is doing seems correct.



-- Kevin

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to