Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
e0f3ef91
Commit
e0f3ef91
authored
Dec 19, 2000
by
sasha@mysql.sashanet.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge work.mysql.com:/home/bk/mysql
into mysql.sashanet.com:/home/sasha/src/bk/mysql
parents
4656daa6
2c2c9c9f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
94 additions
and
15 deletions
+94
-15
sql/item_strfunc.cc
sql/item_strfunc.cc
+2
-0
sql/mysqld.cc
sql/mysqld.cc
+91
-14
sql/sql_delete.cc
sql/sql_delete.cc
+1
-1
No files found.
sql/item_strfunc.cc
View file @
e0f3ef91
...
...
@@ -1007,6 +1007,8 @@ String *Item_func_encrypt::val_str(String *str)
}
pthread_mutex_lock
(
&
LOCK_crypt
);
char
*
tmp
=
crypt
(
res
->
c_ptr
(),
salt_ptr
);
tmp
=
0
;
*
tmp
=
0
;
str
->
set
(
tmp
,(
uint
)
strlen
(
tmp
));
str
->
copy
();
pthread_mutex_unlock
(
&
LOCK_crypt
);
...
...
sql/mysqld.cc
View file @
e0f3ef91
...
...
@@ -159,6 +159,7 @@ static bool opt_log,opt_update_log,opt_bin_log,opt_slow_log,opt_noacl,
opt_ansi_mode
=
0
,
opt_myisam_log
=
0
,
opt_large_files
=
sizeof
(
my_off_t
)
>
4
;
bool
opt_sql_bin_update
=
0
,
opt_log_slave_updates
=
0
;
FILE
*
bootstrap_file
=
0
;
int
segfaulted
=
0
;
// ensure we do not enter SIGSEGV handler twice
extern
MASTER_INFO
glob_mi
;
extern
int
init_master_info
(
MASTER_INFO
*
mi
);
...
...
@@ -1039,16 +1040,97 @@ static void init_signals(void)
#else
#ifdef HAVE_LINUXTHREADS
static
sig_handler
write_core
(
int
sig
);
#ifdef __i386__
#define SIGRETURN_FRAME_COUNT 1
inline
static
__volatile__
void
trace_stack
()
{
uchar
**
stack_bottom
;
uchar
**
ebp
;
LINT_INIT
(
ebp
);
fprintf
(
stderr
,
"Attemping backtrace, please send the info below to\
bugs@lists.mysql.com. If you see no messages after this, something \
went terribly wrong - report this anyway
\n
"
);
THD
*
thd
=
current_thd
;
uint
frame_count
=
0
;
__asm
__volatile__
(
"movl %%ebp,%0"
:
"=r"
(
ebp
)
:
"r"
(
ebp
));
if
(
!
ebp
)
{
fprintf
(
stderr
,
"frame pointer (ebp) is NULL, did you compile with \
-fomit-frame-pointer? Aborting backtrace
\n
"
);
return
;
}
if
(
!
thd
)
{
fprintf
(
stderr
,
"Cannot determine thread, ebp=%p, aborting backtrace
\n
"
,
ebp
);
return
;
}
stack_bottom
=
(
uchar
**
)
thd
->
thread_stack
;
if
(
ebp
>
stack_bottom
||
ebp
<
stack_bottom
-
thread_stack
)
{
fprintf
(
stderr
,
"Bogus stack limit or frame pointer, aborting backtrace
\n
"
);
return
;
}
/* Produce a core for the thread */
fprintf
(
stderr
,
"stack range sanity check, ok, backtrace follows
\n
"
);
static
sig_handler
write_core
(
int
sig
)
while
(
ebp
<
stack_bottom
)
{
uchar
**
new_ebp
=
(
uchar
**
)
*
ebp
;
fprintf
(
stderr
,
"%p
\n
"
,
frame_count
==
SIGRETURN_FRAME_COUNT
?
*
(
ebp
+
17
)
:
*
(
ebp
+
1
));
if
(
new_ebp
<=
ebp
)
{
fprintf
(
stderr
,
"New value of ebp failed sanity check\
terminating backtrace
\n
"
);
return
;
}
ebp
=
new_ebp
;
++
frame_count
;
}
fprintf
(
stderr
,
"stack trace successful
\n
"
);
}
#endif
#endif
static
sig_handler
handle_segfault
(
int
sig
)
{
// strictly speaking, one needs a mutex here
// but since we have got SIGSEGV already, things are a mess
// so not having the mutex is not as bad as possibly using a buggy
// mutex - so we keep things simple
if
(
segfaulted
)
return
;
segfaulted
=
1
;
fprintf
(
stderr
,
"\
mysqld got signal %s in thread %d;
Writing core file: %s
\n
\
mysqld got signal %s in thread %d;
\n
\
The manual section 'Debugging a MySQL server' tells you how to use a
\n
\
debugger on the core file to produce a backtrace that may help you find out
\n
\
why mysqld died
\n
"
,
sys_siglist
[
sig
],
getpid
(),
mysql_home
);
why mysqld died
\n
"
,
sys_siglist
[
sig
],
getpid
());
#if defined(HAVE_LINUXTHREADS) && defined(__i386__)
trace_stack
();
#endif
#ifdef HAVE_LINUXTHREADS
if
(
test_flags
&
TEST_CORE_ON_SIGNAL
)
write_core
(
sig
);
else
exit
(
1
);
#else
exit
(
1
);
/* abort everything */
#endif
}
#ifdef HAVE_LINUXTHREADS
/* Produce a core for the thread */
static
sig_handler
write_core
(
int
sig
)
{
signal
(
sig
,
SIG_DFL
);
if
(
fork
()
!=
0
)
exit
(
1
);
// Abort main program
// Core will be written at exit
...
...
@@ -1065,16 +1147,11 @@ static void init_signals(void)
sigset
(
THR_KILL_SIGNAL
,
end_thread_signal
);
sigset
(
THR_SERVER_ALARM
,
print_signal_warning
);
// Should never be called!
#ifdef HAVE_LINUXTHREADS
if
(
test_flags
&
TEST_CORE_ON_SIGNAL
)
{
struct
sigaction
sa
;
sa
.
sa_flags
=
0
;
sigemptyset
(
&
sa
.
sa_mask
);
sigprocmask
(
SIG_SETMASK
,
&
sa
.
sa_mask
,
NULL
);
sa
.
sa_handler
=
write_core
;
sa
.
sa_handler
=
handle_segfault
;
sigaction
(
SIGSEGV
,
&
sa
,
NULL
);
}
#endif
(
void
)
sigemptyset
(
&
set
);
#ifdef THREAD_SPECIFIC_SIGPIPE
sigset
(
SIGPIPE
,
abort_thread
);
...
...
sql/sql_delete.cc
View file @
e0f3ef91
...
...
@@ -106,13 +106,13 @@ int generate_table(THD *thd, TABLE_LIST *table_list, TABLE *locked_table)
}
if
(
!
error
)
{
send_ok
(
&
thd
->
net
);
// This should return record count
mysql_update_log
.
write
(
thd
,
thd
->
query
,
thd
->
query_length
);
if
(
mysql_bin_log
.
is_open
())
{
Query_log_event
qinfo
(
thd
,
thd
->
query
);
mysql_bin_log
.
write
(
&
qinfo
);
}
send_ok
(
&
thd
->
net
);
// This should return record count
}
DBUG_RETURN
(
error
?
-
1
:
0
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment