|
From: Tom H. <to...@co...> - 2008-02-25 09:17:44
|
In message <a71...@ma...>
Dan Kegel <da...@ke...> wrote:
> I'd been happily using valgrind from svn of Feb 12th
> on wine's conformance test suite, and then I upgraded
> my OS from Ubuntu Feisty to Ubuntu Gutsy.
> Suddenly I began seeing the following kind of error.
> Updating to a fresh copy of valgrind from svn didn't help;
> the following error is from the fresh build.
>
> --26623-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11
> (SIGSEGV) - exiting
> --26623-- si_code=2; Faulting address: 0x0; sp: 0x627C1DF8
>
> valgrind: the 'impossible' happened:
> Killed by fatal signal
> ==26623== at 0x38003987: check_mem_is_defined_asciiz (mc_main.c:2445)
> ==26623== by 0x3803A615: vgSysWrap_linux_sys_utimensat_before
> (syswrap-linux.c:2834)
> ==26623== by 0x38038410: vgPlain_client_syscall (syswrap-main.c:850)
> ==26623== by 0x38035F27: vgPlain_scheduler (scheduler.c:798)
> ==26623== by 0x38049EE8: run_a_thread_NORETURN (syswrap-linux.c:89)
>
> That line of mc_main.c is:
> /* Ok, a is safe to read. */
> if (* ((UChar*)a) == 0) {
>
> The rest of the message is
>
> sched status:
> running_tid=1
>
> Thread 1: status = VgTs_Runnable
> ==26623== at 0x40007F2: (within /lib/ld-2.6.1.so)
> ==26623== by 0x46F2AA3: NtSetInformationFile (file.c:1621)
That line in wine is doing futimes() to set the timestamp on a
file descriptor, and I suspect your OS upgrade got you a new glibc
that uses the new utimensat() system call to implement futimes().
Our wrapper for that system call appears to be wrong as it doesn't
allow a null pointer for ARG2 which the kernel does seem to do - if
the filename is null then it takes the fd as the file to update
rather than the directory to resolve the filename relative to.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|