Thread

  1. Please, fix!!! The backend can crash on your system!

    Alexis Wilke <alexis_wilke@yahoo.com> — 2001-03-29T12:25:20Z

    If PostgreSQL failed to compile on your computer or you found a bug that
    is likely to be specific to one platform then please fill out this form
    and e-mail it to pgsql-ports@postgresql.org.
    
    To report any other bug, fill out the form below and e-mail it to
    pgsql-bugs@postgresql.org.
    
    If you not only found the problem but solved it and generated a patch
    then e-mail it to pgsql-patches@postgresql.org instead.  Please use the
    command "diff -c" to generate the patch.
    
    You may also enter a bug report at http://www.postgresql.org/ instead of
    e-mail-ing this form.
    
    ============================================================================
                            POSTGRESQL BUG REPORT TEMPLATE
    ============================================================================
    
    
    Your name		:	Alexis Wilke
    Your email address	:	alexis@m2osw.com
    
    
    System Configuration
    ---------------------
      Architecture (example: Intel Pentium)  	: trust me, doesn't matter
    
      Operating System (example: Linux 2.0.26 ELF) 	: trust me, doesn't matter
    
      PostgreSQL version (example: PostgreSQL-7.0):   since PostgreSQL-6.5.x
                                                      and still in the code
    
      Compiler used (example:  gcc 2.8.0)		: trust me, doesn't matter
    
    
    Please enter a FULL description of your problem:
    ------------------------------------------------
    
    It crashes when pg_database is too large. This is because
    the index is compare to max with <= instead of <. I already
    fixed the bug on my system. That's at line 
    
    
    
    Please describe a way to repeat the problem.   Please try to provide a
    concise reproducible example, if at all possible: 
    ----------------------------------------------------------------------
    
    Create many database (or create/destroy the same many times).
    
    Once the pg_database is more than one page (is 16Kb or more) then it
    starts
    crashing. (may not crash on all systems, but trust me, my fix
    will work GREAT).
    
    
    
    If you know how this problem might be fixed, list the solution below:
    ---------------------------------------------------------------------
    
    Okay, so go in the following file:
    
    ./src/backend/utils/misc/database.c
    
    and move to the line #183 (V7.0.1)
    
    There, fix the for() as is:
    
    	for(i = 0; i < max; i++)
    
    Why? Well, because 'i' starts at 0, therefore, you
    can't access the tuple number 'max'. If you look in
    other source files, you will quickly see that all
    these for() loops are starting with an index of
    1 and use some special functions/macros to access
    the tuple data.
    
    
    
    
    
    __________________________________________________
    Do You Yahoo!?
    Get email at your own domain with Yahoo! Mail. 
    http://personal.mail.yahoo.com/?.refer=text
    
    
  2. Re: Please, fix!!! The backend can crash on your system!

    Bruce Momjian <pgman@candle.pha.pa.us> — 2001-03-29T13:39:04Z

    In the current sources, I see:
    
            for (lineoff = FirstOffsetNumber; lineoff <= max; lineoff++)
    
    so it looks like we have this fixed.  You can check the 7.1RC1.
    
    
    > 
    > If PostgreSQL failed to compile on your computer or you found a bug that
    > is likely to be specific to one platform then please fill out this form
    > and e-mail it to pgsql-ports@postgresql.org.
    > 
    > To report any other bug, fill out the form below and e-mail it to
    > pgsql-bugs@postgresql.org.
    > 
    > If you not only found the problem but solved it and generated a patch
    > then e-mail it to pgsql-patches@postgresql.org instead.  Please use the
    > command "diff -c" to generate the patch.
    > 
    > You may also enter a bug report at http://www.postgresql.org/ instead of
    > e-mail-ing this form.
    > 
    > ============================================================================
    >                         POSTGRESQL BUG REPORT TEMPLATE
    > ============================================================================
    > 
    > 
    > Your name		:	Alexis Wilke
    > Your email address	:	alexis@m2osw.com
    > 
    > 
    > System Configuration
    > ---------------------
    >   Architecture (example: Intel Pentium)  	: trust me, doesn't matter
    > 
    >   Operating System (example: Linux 2.0.26 ELF) 	: trust me, doesn't matter
    > 
    >   PostgreSQL version (example: PostgreSQL-7.0):   since PostgreSQL-6.5.x
    >                                                   and still in the code
    > 
    >   Compiler used (example:  gcc 2.8.0)		: trust me, doesn't matter
    > 
    > 
    > Please enter a FULL description of your problem:
    > ------------------------------------------------
    > 
    > It crashes when pg_database is too large. This is because
    > the index is compare to max with <= instead of <. I already
    > fixed the bug on my system. That's at line 
    > 
    > 
    > 
    > Please describe a way to repeat the problem.   Please try to provide a
    > concise reproducible example, if at all possible: 
    > ----------------------------------------------------------------------
    > 
    > Create many database (or create/destroy the same many times).
    > 
    > Once the pg_database is more than one page (is 16Kb or more) then it
    > starts
    > crashing. (may not crash on all systems, but trust me, my fix
    > will work GREAT).
    > 
    > 
    > 
    > If you know how this problem might be fixed, list the solution below:
    > ---------------------------------------------------------------------
    > 
    > Okay, so go in the following file:
    > 
    > ./src/backend/utils/misc/database.c
    > 
    > and move to the line #183 (V7.0.1)
    > 
    > There, fix the for() as is:
    > 
    > 	for(i = 0; i < max; i++)
    > 
    > Why? Well, because 'i' starts at 0, therefore, you
    > can't access the tuple number 'max'. If you look in
    > other source files, you will quickly see that all
    > these for() loops are starting with an index of
    > 1 and use some special functions/macros to access
    > the tuple data.
    > 
    > 
    > 
    > 
    > 
    > __________________________________________________
    > Do You Yahoo!?
    > Get email at your own domain with Yahoo! Mail. 
    > http://personal.mail.yahoo.com/?.refer=text
    > 
    > ---------------------------(end of broadcast)---------------------------
    > TIP 4: Don't 'kill -9' the postmaster
    > 
    
    
    -- 
      Bruce Momjian                        |  http://candle.pha.pa.us
      pgman@candle.pha.pa.us               |  (610) 853-3000
      +  If your life is a hard drive,     |  830 Blythe Avenue
      +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026