Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 197165 - luit stops working after initial call
Summary: luit stops working after initial call
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: xorg-x11-apps
Version: 5
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Søren Sandmann Pedersen
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: FC6Target
TreeView+ depends on / blocked
 
Reported: 2006-06-28 22:57 UTC by Thorsten Scherf
Modified: 2014-06-18 09:08 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-10-02 19:45:20 UTC


Attachments (Terms of Use)

Description Thorsten Scherf 2006-06-28 22:57:03 UTC
Description of problem:
when calling an application with luit for the first time, it works without any
problems. when calling the app the second time, it just hangs:

[tscherf@tiffy ~]$ LANG=de_DE luit slrn

Here is the strace output:

[tscherf@tiffy ~]$ strace luit slrn
execve("/usr/bin/luit", ["luit", "slrn"], [/* 40 vars */]) = 0
brk(0)                                  = 0x88a1000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7fb1000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=95054, ...}) = 0
mmap2(NULL, 95054, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f99000
close(3)                                = 0
open("/usr/lib/libX11.so.6", O_RDONLY)  = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\374"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1037192, ...}) = 0
mmap2(0x8ab000, 1035876, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x8ab000
mmap2(0x9a4000, 16384, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf9) = 0x9a4000
close(3)                                = 0
open("/usr/lib/libfontenc.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\16\266"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=23432, ...}) = 0
mmap2(0xb60000, 26112, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0xb60000
mmap2(0xb65000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,
3, 0x4) = 0xb65000
close(3)                                = 0
open("/usr/lib/libz.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\'\211"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=75632, ...}) = 0
mmap2(0x891000, 77008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x891000
mmap2(0x8a3000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,
3, 0x11) = 0x8a3000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0JHt\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1532536, ...}) = 0
mmap2(0x72f000, 1254780, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x72f000
mmap2(0x85c000, 12288, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12d) = 0x85c000
mmap2(0x85f000, 9596, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS,
-1, 0) = 0x85f000
close(3)                                = 0
open("/usr/lib/libXau.so.6", O_RDONLY)  = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 k\212\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=9776, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f98000
mmap2(0x8a6000, 11252, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x8a6000
mmap2(0x8a8000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,
3, 0x1) = 0x8a8000
close(3)                                = 0
open("/usr/lib/libXdmcp.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\257"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=20312, ...}) = 0
mmap2(0x9aa000, 21780, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x9aa000
mmap2(0x9af000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,
3, 0x4) = 0x9af000
close(3)                                = 0
open("/lib/libdl.so.2", O_RDONLY)       = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\274\210"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=16352, ...}) = 0
mmap2(0x88b000, 12412, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) =
0x88b000
mmap2(0x88d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE,
3, 0x1) = 0x88d000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f97000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f978d0, limit:1048575,
seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0,
useable:1}) = 0
mprotect(0x85c000, 8192, PROT_READ)     = 0
mprotect(0x88d000, 4096, PROT_READ)     = 0
mprotect(0x72b000, 4096, PROT_READ)     = 0
munmap(0xb7f99000, 95054)               = 0
brk(0)                                  = 0x88a1000
brk(0x88c2000)                          = 0x88c2000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=54313024, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7d97000
close(3)                                = 0
open("/usr/share/X11/locale/locale.alias", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=75106, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7fb0000
read(3, "#\t$XdotOrg: xc/nls/locale.alias,"..., 4096) = 4096
read(3, "4\t\t\t\tbr_FR.ISO8859-14\nbr_FR.ISO-"..., 4096) = 4096
read(3, "en.ISO-8859-1\t\t\t\t\ten_US.ISO8859-"..., 4096) = 4096
read(3, "\t\t\tes_ES.ISO8859-15\nes_ES.ISO-88"..., 4096) = 4096
read(3, "A.ISO-8859-15\t\t\t\tfr_CA.ISO8859-1"..., 4096) = 4096
read(3, ".iso88591\t\t\t\t\tit_IT.ISO8859-1\nit"..., 4096) = 4096
read(3, "SO8859-15\nnl_BE@euro\t\t\t\t\tnl_BE.I"..., 4096) = 4096
read(3, "\t\t\t\t\t\tsk_SK.ISO8859-2\nsk_SK\t\t\t\t\t"..., 4096) = 4096
read(3, "SO8859-1\nwa_BE\t\t\t\t\t\twa_BE.ISO885"..., 4096) = 4096
read(3, "mes\nISO8859-1\t\t\t\t\ten_US.ISO8859-"..., 4096) = 4096
read(3, "\t\t\tbg_BG.KOI8-R\nbe_BG.utf8:\t\t\t\t\t"..., 4096) = 4096
read(3, "8859:\t\t\t\t\tde_DE.ISO8859-1\nGER_DE"..., 4096) = 4096
read(3, "R.UTF-8\nes_DO:\t\t\t\t\t\tes_DO.ISO885"..., 4096) = 4096
read(3, "859-1\nfr_BE.88591:\t\t\t\t\tfr_BE.ISO"..., 4096) = 4096
read(3, "d ISO code for Indonesian (now i"..., 4096) = 4096
read(3, "8:\t\t\t\t\tmk_MK.UTF-8\nmr_IN:\t\t\t\t\t\tm"..., 4096) = 4096
read(3, "\t\t\tro_RO.UTF-8\nru:\t\t\t\t\t\tru_RU.IS"..., 4096) = 4096
read(3, "\t\tts_ZA.UTF-8\ntt:\t\t\t\t\t\ttt_RU.TAT"..., 4096) = 4096
read(3, "\thr_HR.ISO8859-2\nhungarian:\t\t\t\t\t"..., 4096) = 1378
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xb7fb0000, 4096)                = 0
open("/dev/ptmx", O_RDWR)               = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, TIOCGPTN, [6])                 = 0
stat64("/dev/pts/6", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 6), ...}) = 0
statfs("/dev/pts/6", {f_type="DEVPTS_SUPER_MAGIC", f_bsize=4096, f_blocks=0,
f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255,
f_frsize=4096}) = 0
ioctl(3, TIOCSPTLCK, [0])               = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, TIOCGPTN, [6])                 = 0
stat64("/dev/pts/6", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 6), ...}) = 0
getuid32()                              = 500
getgid32()                              = 500
stat64("/dev/pts/6", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 6), ...}) = 0
getgid32()                              = 500
getuid32()                              = 500
chown32("/dev/pts/6", 500, 500)         = 0
getuid32()                              = 500
geteuid32()                             = 500
getgid32()                              = 500
getegid32()                             = 500
setuid32(500)                           = 0
setgid32(500)                           = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0xb7f97918) = 14345
rt_sigaction(SIGWINCH, {0x804b1b0, [], 0}, NULL, 8) = 0
rt_sigaction(SIGCHLD, {0x804b1c0, [], 0}, NULL, 8) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, SNDCTL_TMR_CONTINUE or TCSETSF



Version-Release number of selected component (if applicable):
xorg-x11-apps-1.0.1-2

How reproducible:
always

Steps to Reproduce:
1.call any iso-8859-1 application with luit several times
2.
3.
  
Actual results:
it hangs

Expected results:
working application

Additional info:

Comment 1 Søren Sandmann Pedersen 2006-10-02 19:45:20 UTC
This is apparently a race condition, where if slrn gets to run before the parent
in luit's fork sets the terminal, tcsetattr() will hang.

I have put in a patch to make the child wait on the parent, and filed an
upstream bug here: https://bugs.freedesktop.org/show_bug.cgi?id=8490

The fix will appear in xorg-x11-apps-7.1-4.fc6.



Note You need to log in before you can comment on or make changes to this bug.