Skip to contentSkip to conversation

That getpagesize() problem again!

Linux-ia64 Francis Galiegue 3 participants 4 messages Jan 25, 2001

lore
Share & tools
lore
#0 lore raw

When trying to install only two packages via RPM in a chroot, this is what I get:

rpm: ../sysdeps/unix/sysv/linux/ia64/getpagesize.c:36: __getpagesize: Assertion `_dl_pagesize != 0'
failed.

Then, abort and core dump.

What I'd like to know is why, in the glibc file mentioned in the error, __getpagesize is defined as such:

int
__getpagesize ()
{
assert (_dl_pagesize != 0);
return _dl_pagesize;
}

(that's glibc 2.2.1, but 2.2 exhibits the same behaviour)

This looks all the more strange that you can define the page size during kernel compile! A sample test program which I made using the getpagesize() syscall yields the correct value, though...

What should I do?

Signature · 4 lines
Francis Galiegue, [email protected]
"Programming is a race between programmers, who try and make more and more
idiot-proof software, and universe, which produces more and more remarkable
idiots. Until now, universe leads the race"  -- R. Cook
#1 lore raw

Francis Galiegue <[email protected]> writes:

|> When trying to install only two packages via RPM in a chroot, this is what I
|> get:
|> 
|> rpm: ../sysdeps/unix/sysv/linux/ia64/getpagesize.c:36: __getpagesize: Assertion
|> `_dl_pagesize != 0'
|> failed.
|> 
|> Then, abort and core dump.
|> 
|> What I'd like to know is why, in the glibc file mentioned in the error,
|> __getpagesize is defined as such:
|> 
|> int
|> __getpagesize ()
|> {
|>   assert (_dl_pagesize != 0);
|>   return _dl_pagesize;
|> }
|> 
|> (that's glibc 2.2.1, but 2.2 exhibits the same behaviour)
|> 
|> This looks all the more strange that you can define the page size during kernel
|> compile! A sample test program which I made using the getpagesize() syscall
|> yields the correct value, though...

If the getpagesize syscall works, then your kernel is too old.

|> What should I do?

You need to run kernel 2.4.0-test9 with the 001030 patch or later. Earlier versions didn't pass AT_PAGESZ in all cases.

Andreas.

Signature · 4 lines
Andreas Schwab                                  "And now for something
SuSE Labs                                        completely different."
[email protected]
SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg
#2 lore raw
In reply to Francis Galiegue
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Andreas" = Andreas Schwab <[email protected]> writes:

|> What should I do?

Andreas> You need to run kernel 2.4.0-test9 with the 001030 patch or Andreas> later. Earlier versions didn't pass AT_PAGESZ in all cases.

Actually the problem is that Francis' rpm binaries have been compiled and linked statically against an old version of glibc that didn't get the pagesize from AT_PAGESZ.

Francis you need to get a proper set of RPM binaries for your machines linked against the new library.

Jes

#3 lore raw
In reply to Francis Galiegue
Quoted 6 lines · Jes Sorensen

|> What should I do?

Andreas> You need to run kernel 2.4.0-test9 with the 001030 patch or Andreas> later. Earlier versions didn't pass AT_PAGESZ in all cases.

Quoted 7 lines

Actually the problem is that Francis' rpm binaries have been compiled and linked statically against an old version of glibc that didn't get the pagesize from AT_PAGESZ.

Francis you need to get a proper set of RPM binaries for your machines linked against the new library.

Uhwell, I compiled against glibc 2.2.1...

Anyway, I'm going to reboot under 2.4.0 + patch and see if this cures the problem... More info later...

Signature · 4 lines
Francis Galiegue, [email protected]
"Programming is a race between programmers, who try and make more and more
idiot-proof software, and universe, which produces more and more remarkable
idiots. Until now, universe leads the race"  -- R. Cook