Hi!

It turned out that the bug indeed was connected with a 32-bit signed integer
wrap-over if the buffer pool on a 32-bit computer is bigger than 2 GB.

The following patch may fix the problem, but better test first if there are
also other similar wrap-overs which I did not notice.

Best regards,

Heikki
Innobase Oy

--- 1.4/innobase/include/buf0buf.ic Tue Dec  4 16:14:52 2001
+++ 1.5/innobase/include/buf0buf.ic Wed Jun 26 21:42:32 2002
@@ -209,7 +209,7 @@

  ut_ad((ulint)ptr >= (ulint)frame_zero);

- block = buf_pool_get_nth_block(buf_pool, (ptr - frame_zero)
+ block = buf_pool_get_nth_block(buf_pool, ((ulint)(ptr - frame_zero))
  >> UNIV_PAGE_SIZE_SHIFT);
  ut_a(block >= buf_pool->blocks);
  ut_a(block < buf_pool->blocks + buf_pool->max_size);
@@ -236,7 +236,7 @@

  ut_ad((ulint)ptr >= (ulint)frame_zero);

- block = buf_pool_get_nth_block(buf_pool, (ptr - frame_zero)
+ block = buf_pool_get_nth_block(buf_pool, ((ulint)(ptr - frame_zero))
  >> UNIV_PAGE_SIZE_SHIFT);
  ut_a(block >= buf_pool->blocks);
  ut_a(block < buf_pool->blocks + buf_pool->max_size);

----- Original Message -----
From: "Heikki Tuuri" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, June 26, 2002 4:42 PM
Subject: Re: innodb bug


> Shakeel,
>
> this may be something with 32-bit unsigned integer / signed integer
> arithmetic. I assume mysqld runs in the 32-bit mode?
>
> Are you able to compile mysqld yourself? You could add the following to
line
> 214 of mysql/innobase/include/buf0buf.ic
>
> ...
> if (block < buf_pool->blocks) {
>     printf("Values %lu, %lu, %lu, %lu\n", (ulint)(ptr - frame_zero),
> (ulint)((ptr - frame_zero) >> UNIV_PAGE_SIZE_SHIFT),
>                            (ulint)block, (ulint)(buf_pool->blocks),
> (ulint)ptr, (ulint)frame_zero);
> }
> ...
>
> Regards,
>
> Heikki
> Innobase Oy
>
> ----- Original Message -----
> From: "Shakeel Sorathia" <[EMAIL PROTECTED]>
> Newsgroups: mailing.database.mysql
> Sent: Wednesday, June 26, 2002 1:19 AM
> Subject: innodb bug
>
>
> > I've been having a problem with innodb lately.  We just upgraded one of
> > our machine to have 4 GB of ram in it.  However, whenever I make the
> > innodb_buffer_pool_size greater then 2048M  It crashes with the
> > following in the error log.  It's 3.23.51 running on a Solaris 8
> > Ultrasparc II machine with 4 GB ram.  Is the limit 2gb of ram, or is
> > there something that I'm doing wrong?  Thanks for the help!
> >
> > --shak
> >
> > 020625 12:57:14  mysqld started
> > InnoDB: Assertion failure in thread 1 in file ../include/buf0buf.ic line
> 214
> > InnoDB: We intentionally generate a memory trap.
> > InnoDB: Send a detailed bug report to [EMAIL PROTECTED]
> > mysqld got signal 11;
> > This could be because you hit a bug. It is also possible that this
binary
> > or one of the libraries it was linked agaist is corrupt, improperly
built,
> > or misconfigured. This error can also be caused by malfunctioning
> hardware.
> > We will try our best to scrape up some info that will hopefully help
> > diagnose
> > the problem, but since we have already crashed, something is definitely
> > wrong
> > and this may fail
> >
> > key_buffer_size=8388600
> > record_buffer=131072
> > sort_buffer=1048568
> > max_used_connections=0
> > max_connections=1024
> > threads_connected=0
> > It is possible that mysqld could use up to
> > key_buffer_size + (record_buffer + sort_buffer)*max_connections =
1187831
> K
> > bytes of memory
> > Hope that's ok, if not, decrease some variables in the equation
> >
> > 020625 12:57:54  mysqld ended
> >
> > --
> >   Shakeel Sorathia
> > Systems Administrator
> >    (213) 739-5348
> >
> >
> >
> > ---------------------------------------------------------------------
> > 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
> >
>



---------------------------------------------------------------------
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