Bug #6827 server crashes if innodb_buffer_pool_size set too big

Submitted: 25 Nov 2004 15:32 Modified: 25 Nov 2004 22:47
Reporter: Aleksey Kishkin Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S4 (Feature request)
Version:4.1.7 OS:Linux (Linux)
Assigned to: Heikki Tuuri CPU Architecture:Any

[25 Nov 2004 15:32] Aleksey Kishkin
Description:
When I incidentely set innodb_buffer_pool_size to 2G on computer that has 512M RAM and 512M swap, mysql crashed with signal 11 (SIGSEGV).

Computer obviously cannot provide such amount of memory that mysqld demanded, but I think server must handle somehow this situation. Probably it must warn and use default low value of innodb_buffer_pool_size. 

How to repeat:
run mysql server on low memory computer with my.cnf  that contains

[mysqld]
innodb_buffer_pool_size = 2G
[25 Nov 2004 15:52] Heikki Tuuri
Aleksey,

please show the FULL output of mysqld. Do not cut anything off.

Regards,

Heikki
[25 Nov 2004 16:06] Aleksey Kishkin
error log

Attachment: walrus.err (application/octet-stream, text), 2.17 KiB.

[25 Nov 2004 16:12] Aleksey Kishkin
sure. I attached .err file and my.cnf. Server that I used is our standard mysql, downloaded from dev.mysql.com: 
mysql-standard-4.1.7-pc-linux-i686.tar.gz

resolve_stack_dump shows following: 

0x808af93 handle_segfault + 423
0x82d6de8 pthread_sighandler + 184
0x826cb12 ut_malloc_low + 146
0x826cb98 ut_malloc + 20
0x81e5f04 buf_pool_init + 1388
0x813b027 innobase_start_or_create_for_mysql + 1375
0x80fbb74 innobase_init__Fv + 1104
0x80f4a7f ha_init__Fv + 23
0x808c1a8 init_server_components__Fv + 808
0x808c51a main + 494
0x82deed4 __libc_start_main + 212
0x8048101 _start + 33
[25 Nov 2004 16:12] Aleksey Kishkin
config file

Attachment: my.cnf (application/octet-stream, text), 38 bytes.

[25 Nov 2004 16:24] Heikki Tuuri
Walrus,

not able to allocate enough memory is a fatal error. Like it says in the .err log, we crash the server and print the stack trace to get debug information.

Regards,

Heikki
[25 Nov 2004 17:19] Sergei Golubchik
Heikki, not able to allocate enough memory is a fatal error.

Nevertheless it should not crash but return an error. MySQL then will exit gracefully.
[25 Nov 2004 17:29] Heikki Tuuri
Hi!

I am changing this to a feature request.

If we know that out-of-memory is an expected condition, and NOT a result of some unknown bug, then mysqld should exit gracefully, and not print a stack trace.

Regards,

Heikki
[25 Nov 2004 22:47] Heikki Tuuri
-------------------------------------------------
Many files:
  Fix bug #6817 and bug #6827 : do not crash the server if the buffer pool becom
es filled by the locks of ONE huge transaction, return error 1206 instead; do no
t crash the server, but return error if we cannot allocate memory for the buffer
 pool at a mysqld startup
-------------------------------------------------

If memory runs out at some other place, then we still crash mysqld to get the stack trace.

Thank you,

Heikki
[25 Nov 2004 22:48] Heikki Tuuri
Forgot to mention that the fix is in 4.1.8.

--Heikki

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.042 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.