Hi!


Michael> A couple of others have reported this in the last month.  I reported what
Michael> I believe to be the same problem on Mon, 29 Oct 2001 with mysql 3.23.43
Michael> built from source with gcc 2.95.3 according to the instructions in the
Michael> manual.  I believe the problem is that enabling largefile support, as is
Michael> done in the official binaries, breaks getrlimit/setrlimit in HPUX 10.20,
Michael> at least for us.  It seems that when you enable largefiles (define
Michael> _FILE64), rlim_t changes from uint32_t to uint64_t, and something goes
Michael> horribly wrong.

Actually everything works perfectly :)

Michael> Try this simple c program (based on set_maximum_open_files in mysqld.cc):
Michael> ===========================
Michael> #include <sys/resource.h>
Michael> #include <errno.h>
Michael> #include <stdio.h>

Michael> int main()
Michael> {
Michael>   struct rlimit rl;
Michael>   uint x;
  
Michael>   x = 100;
Michael>   if (!getrlimit(RLIMIT_NOFILE,&rl))
Michael>   {
Michael>     printf("getrlimit: cur=%ld max=%ld\n", rl.rlim_cur, rl.rlim_max);
Michael>   }
Michael>   rl.rlim_cur = x;
Michael>   rl.rlim_max = x;
Michael>   printf("assign: cur=%ld max=%ld\n", rl.rlim_cur, rl.rlim_max);
Michael>   if (setrlimit(RLIMIT_NOFILE,&rl))
Michael>   {
Michael>     printf("Err: errno=%ld cur=%ld max=%ld\n",errno,rl.rlim_cur,rl.rlim_max);
Michael>   }
Michael>   printf("setrlimit: cur=%ld max=%ld\n", rl.rlim_cur, rl.rlim_max);
Michael>   0;
Michael> }
Michael> ===========================

Michael> I named this rlimtest.c.  Here's what I get:

<cut>

Michael> $ gcc -D_FILE64 rlimtest.c                                          
Michael> $ ./a.out                                                           
Michael> getrlimit: cur=137119232 max=60
Michael> assign: cur=2063670312 max=100
Michael> setrlimit: cur=137119232 max=100

Michael> As you can see, I get nonsense with _FILE64.  

This is becasue rl.rlimit_cur and rl.rlim_max are 64 bit integers, but
you are using printf() on 32 bit integers!

Fix:  cast all integer arguments to printf to (long) or print the
       integers are high-byte / low-byte.

I did the casts to long and the above worked perfectly for me.


Michael> Strictly speaking, then, this is a bug in either HPUX or gcc (probably
Michael> HPUX), not in mysql.  On the other hand, those of us who have this problem
Michael> cannot use the precompiled binary.  

The precompiled binary should work ok.

Michael> My workaround is to compile mysql from source, adding --disable-largefile
Michael> to the options recommended in the manual.  Perhaps there is a better way
Michael> -- maybe a fix for HPUX?

What kind of errors do you get if you don't use --disable-largefile ?

Michael> I also note that every post I could find on Google on the subject of
Michael> building mysql from source on HPUX 10.20 recommended --disable-largefile
Michael> (though none I saw actually said why).

I haven't seen this before.


Michael> Michael

Michael> On Tue, 4 Dec 2001, Hans-Joerg Puch wrote:

>> Hello,
>> I was trying a normal installation on a HP UX 10.20 based HP 9000/712.
>> The log looks like this:
>> ___________________________________
>> Preparing db table
>> Preparing host table
>> Preparing user table
>> Preparing func table
>> Preparing tables_priv table
>> Preparing columns_priv table
>> Installing all prepared tables
>> 011204 15:37:50  Warning: setrlimit couldn't increase number of open
>> files to more than 60
>> 011204 15:37:50  Warning: Changed limits: max_connections: 50
>> table_cache: 64
>> scripts/mysql_install_db[292]: 3477 Memory fault(coredump)
>> Installation of grant tables failed!

This could happen if the above machine's libraries are somehow not
compatible with ours.  It would be nice to know why...

Regards,
Monty

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