nautilus crashed with SIGSEGV in g_file_query_info()

Bug #234248 reported by Noam Yorav-Raphael
28
This bug affects 2 people
Affects Status Importance Assigned to Milestone
language-pack-gnome-he (Ubuntu)
Invalid
Medium
Unassigned

Bug Description

Binary package hint: nautilus

This is the same as https://bugs.launchpad.net/bugs/234160 but this time with apport crash information.

Here is what I wrote there (a little bit modified):

I:
* select two files on another computer (the address is ssh://othercomputer.local), one of them big (100MB) and the other small
* copy them (ctrl+c)
* open a new nautilus window (using the menu)
* switch to the /tmp directory
* paste (ctrl+v)

Then, a window saying that two files are being copied is displayed.
After the first file is copied, nautilus crashes. The first file was copied OK, and the second file wasn't created at all.

Good luck with the bug, and thanks,
Noam

ProblemType: Crash
Architecture: i386
Date: Fri May 23 11:30:48 2008
DistroRelease: Ubuntu 8.04
ExecutablePath: /usr/bin/nautilus
Package: nautilus 1:2.22.2-0ubuntu6
PackageArchitecture: i386
ProcCmdline: nautilus --no-default-window --sm-client-id default2
ProcEnviron:
 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
 LANG=he_IL.UTF-8
 SHELL=/bin/bash
Signal: 11
SourcePackage: nautilus
Stacktrace:
 #0 0xb7616b18 in g_file_query_info () from /usr/lib/libgio-2.0.so.0
 #1 0x080fb764 in ?? ()
 #2 0x00000001 in ?? ()
 #3 0x0814ffef in ?? ()
 #4 0x00000000 in ?? ()
StacktraceTop:
 g_file_query_info () from /usr/lib/libgio-2.0.so.0
 ?? ()
 ?? ()
 ?? ()
 ?? ()
Title: nautilus crashed with SIGSEGV in g_file_query_info()
Uname: Linux 2.6.24-16-generic i686
UserGroups: adm admin audio cdrom dialout dip floppy kqemu lpadmin netdev plugdev powerdev scanner video

Revision history for this message
Noam Yorav-Raphael (noamraph) wrote :
Revision history for this message
Apport retracing service (apport) wrote : Symbolic stack trace

StacktraceTop:g_file_query_info () from /usr/lib/libgio-2.0.so.0
?? ()
?? ()
?? ()
?? ()

Revision history for this message
Apport retracing service (apport) wrote : Symbolic threaded stack trace
Revision history for this message
Pedro Villavicencio (pedro) wrote :

Thanks for your bug report. Please try to obtain a backtrace http://wiki.ubuntu.com/DebuggingProgramCrash and attach the file to the bug report. This will greatly help us in tracking down your problem.

Changed in nautilus:
assignee: nobody → desktop-bugs
importance: Undecided → Medium
status: New → Incomplete
Revision history for this message
Noam Yorav-Raphael (noamraph) wrote : A stack trace with symbols

Ok, I downloaded nautilus-dbg and some others, and run it through gdb. Here's the result.

Revision history for this message
Sebastien Bacher (seb128) wrote :

the issue is a translation one

Changed in nautilus:
assignee: desktop-bugs → nobody
status: Incomplete → New
Revision history for this message
Sebastien Bacher (seb128) wrote :

likely similar to the spanish bug #197224

Revision history for this message
Noam Yorav-Raphael (noamraph) wrote :

Ok, I have managed to fix it. I changed in the package language-pack-gnome-he the file nautilus.po. Attached is the diff.

Where can I find the place to change this in launchpad?

Noam

Revision history for this message
Ori Hoch (ori-uumpa) wrote :

I'm not sure if this is the same bug but it is very similiar, simply compying more then 1 file in nautilus causes it to crash. This still happens in Interpid.

This is caused by a bad translation in Rosetta here:
https://translations.launchpad.net/ubuntu/intrepid/+source/nautilus/+pots/nautilus/he/362/+translate

also, other wrong translations which should be fixed (i'm not sure if they cause any bugs):
https://translations.launchpad.net/ubuntu/intrepid/+source/nautilus/+pots/nautilus/he/337/+translate
https://translations.launchpad.net/ubuntu/intrepid/+source/nautilus/+pots/nautilus/he/387/+translate

The fix is already suggested in rosetta so it should only be approved as soon as possible. This bug makes nautilus quite unusable for file operations.

thanks.

Revision history for this message
Ori Hoch (ori-uumpa) wrote :

also, the diff attached by noam should be applied, all the translations in rosetta with %'d should also have the %'d in the translations, instead of a textual representation of the number: https://translations.launchpad.net/ubuntu/intrepid/+source/nautilus/+pots/nautilus/he/+translate?batch=10&show=all&search=%25%27d

I attached a fix to this problem until the translation is fixed, to use it, download the fix-nautilus-interpid.tar then do:

tar -xf fix-nautilus-interpid.tar
./install

or just manually copy the .mo file to the appropriate location.

Revision history for this message
Yair Hershkovitz (yairhr) wrote :

(In response to comment #7):

There is nothing wrong with the current %'d translation singular translation to "אחד" and so, and nothing need to be fixed here. Since there is only one printf variable in this string then its removal will only cause printf to ignore the extra number parameter.

And thank you Ubuntu guys for making sure upstream projects are updated with this kind of critical issues - not...

Revision history for this message
Ori Hoch (ori-uumpa) wrote :

thanks Yair, I think I understand the problem now,

I'll try to describe it in more detail:

problem 1:

english string is - "Moving %B"
printf is called like this - printf("Moving %B",special_variable)
the %B is replaced with special_variable - using some custom function which parses special_variable and returns a string
so far so good
now we translate the string by mistake to - "Moving %s"
printf is called like this - printf("Moving %s",special_variable)
%s excepts a string, but instead is getting a special_variable! ERROR!

problem 2:

the english string is - "Duplicating %'d file (in \"%B\")"
printf is called like this - printf("Duplicating %'d file (in \"%B\")",1,special_variable)
%'d is replaced with the number (1)
%B is replaced with the special_variable (using the custom function)

now we are translating the string to - "Duplicating one file (in \"%B\")"
printf is now called like this - printf("Duplicating one file (in \"%B\")",1,special_variable)
%B is replaced with the number (1) - the custom function is called with the number (1) - this results in an error because the custom function excepts a special_variable

Revision history for this message
Yair Hershkovitz (yairhr) wrote : Re: [Bug 234248] Re: nautilus crashed with SIGSEGV in g_file_query_info()

Correct.

But for the cases where the string is a simple "Duplicating %'d file"
string. Which is usually the case when using ngettext for getting a
singular/plural translation. Removing the %'d in the translation has
no effect because it is evaluated to something like
printf("Duplicating one file", 1). Ofcourse if more then one control
sequences are in a single singular/plural
message then all of the control sequences must be kept. If something
like "%'d file in %B" is needed then it should be done
by printf(gettext("%s in %B"), ngettext("%'d fi;e, %'d files,
(int)files), special_var);

On Sun, Nov 2, 2008 at 12:00 PM, Ori Hoch <email address hidden> wrote:
> thanks Yair, I think I understand the problem now,
>
> I'll try to describe it in more detail:
>
> problem 1:
>
> english string is - "Moving %B"
> printf is called like this - printf("Moving %B",special_variable)
> the %B is replaced with special_variable - using some custom function which parses special_variable and returns a string
> so far so good
> now we translate the string by mistake to - "Moving %s"
> printf is called like this - printf("Moving %s",special_variable)
> %s excepts a string, but instead is getting a special_variable! ERROR!
>
> problem 2:
>
> the english string is - "Duplicating %'d file (in \"%B\")"
> printf is called like this - printf("Duplicating %'d file (in \"%B\")",1,special_variable)
> %'d is replaced with the number (1)
> %B is replaced with the special_variable (using the custom function)
>
> now we are translating the string to - "Duplicating one file (in \"%B\")"
> printf is now called like this - printf("Duplicating one file (in \"%B\")",1,special_variable)
> %B is replaced with the number (1) - the custom function is called with the number (1) - this results in an error because the custom function excepts a special_variable
>
> --
> nautilus crashed with SIGSEGV in g_file_query_info()
> https://bugs.launchpad.net/bugs/234248
> You received this bug notification because you are a direct subscriber
> of the bug.
>

Changed in language-pack-gnome-he (Ubuntu):
status: New → Invalid
Revision history for this message
Yaron (sh-yaron) wrote :

This is not a duplicate, this issue caused by omitted parameters in translation.
Although I fixed it numerous times in numerous places.

The best solution would be attaching the names of the parameters to the placeholders, this way it won't crash.

Changed in language-pack-gnome-he (Ubuntu):
status: Invalid → Confirmed
Revision history for this message
dino99 (9d9) wrote :

That version has died long ago; no more supported

Changed in language-pack-gnome-he (Ubuntu):
status: Confirmed → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.