← Back to team overview

group.of.nepali.translators team mailing list archive

[Bug 1669149] Re: improper lseek in stdio code called via exit(3)

 

** Changed in: linux (Ubuntu)
       Status: Incomplete => Triaged

** Also affects: linux (Ubuntu Xenial)
   Importance: Undecided
       Status: New

** Changed in: linux (Ubuntu Xenial)
       Status: New => Triaged

** Changed in: linux (Ubuntu Xenial)
   Importance: Undecided => Medium

-- 
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1669149

Title:
  improper lseek in stdio code called via exit(3)

Status in linux package in Ubuntu:
  Triaged
Status in linux source package in Xenial:
  Triaged

Bug description:
  The attached file bug.c shows the bug.  Use the following input files:

  ------ input1 ------
  THIS IS LINE 11
  1234 56 7890 AB
  ------  end of input1 ------

  ------ input2 ------
  THIS IS LINE 11
  THIS IS LINE 22
  THIS IS LINE 33
  ------ end of input2 ------

  Has the same problem using gcc or clang:

  Example runs:
  ---->~/bug
  linux-12[398]$ clang bug.c

  ---->~/bug
  linux-12[399]$ ./a.out < input1
  THIS IS LINE 11
  1234 56 7890 AB

  ---->~/bug
  linux-12[400]$ clang -DWRONG bug.c

  ---->~/bug
  linux-12[401]$ ./a.out < input1
  THIS IS LINE 11
  1234 56 7890 AB
  1234 56 7890 AB

  ---->~/bug
  linux-12[402]$

  ./a.out < input2 will produce an infinite loop.

  This works on NetBSD:
  ---->~/bug
  mirror[148]$ uname -a
  NetBSD mirror.ldc.cs.wwu.edu 6.1.5 NetBSD 6.1.5 (GENERIC) i386

  ---->~/bug
  mirror[149]$ gcc bug.c 

  ---->~/bug
  mirror[150]$ ./a.out < input
  THIS IS LINE 11
  1234 56 7890 AB

  ---->~/bug
  mirror[151]$ gcc -DWRONG bug.c

  ---->~/bug
  mirror[152]$ ./a.out < input
  THIS IS LINE 11
  1234 56 7890 AB

  ---->~/bug
  mirror[153]$ ./a.out < input2
  THIS IS LINE 11
  THIS IS LINE 22
  THIS IS LINE 33

  ---->~/bug
  mirror[154]$ 

  -------- reason ------

  The code stdio code called by exit(3) uses lseek to reset the file
  pointer to the start of the unused portion of the buffer read from the
  file.   This sounds like a good idea except that both the parent and
  the child share the same file pointer.   So the parent uses the rest
  of the buffer and then reads from the file at the location where the
  child reset the pointer to when it exited.  Thus, the parent rereads
  part of the file because of the child's lseek.  In extreme cases, as
  with input2 above, this can end up in an infinite loop.

  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: linux-libc-dev 4.4.0-64.85
  ProcVersionSignature: Ubuntu 4.4.0-59.80-generic 4.4.35
  Uname: Linux 4.4.0-59-generic x86_64
  ApportVersion: 2.20.1-0ubuntu2.5
  Architecture: amd64
  AudioDevicesInUse: Error: command ['fuser', '-v', '/dev/snd/by-path', '/dev/snd/hwC0D0', '/dev/snd/pcmC0D0c', '/dev/snd/pcmC0D0p', '/dev/snd/controlC0', '/dev/snd/seq', '/dev/snd/timer'] failed with exit code 1: Cannot stat file /proc/24974/fd/7: Stale file handle
  Date: Wed Mar  1 12:37:11 2017
  Dependencies:
   
  HibernationDevice: RESUME=UUID=8e132b37-1993-427b-b84d-347a5defa90c
  InstallationDate: Installed on 2016-08-30 (182 days ago)
  InstallationMedia: Ubuntu 16.04.1 LTS "Xenial Xerus" - Release amd64 (20160719)
  JournalErrors:
   Error: command ['journalctl', '-b', '--priority=warning', '--lines=1000'] failed with exit code 1: Hint: You are currently not seeing messages from other users and the system.
         Users in the 'systemd-journal' group can see all messages. Pass -q to
         turn off this notice.
   No journal files were opened due to insufficient permissions.
  Lsusb:
   Bus 002 Device 003: ID 10d5:5a08 Uni Class Technology Co., Ltd 
   Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
   Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
   Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
   Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  MachineType: Dell Inc. OptiPlex 990
  ProcEnviron:
   TERM=xterm
   PATH=(custom, no user)
   XDG_RUNTIME_DIR=<set>
   LANG=en_US
   SHELL=/bin/bash
  ProcFB: 0 nouveaufb
  ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-4.4.0-59-generic root=UUID=eac16075-6089-4fe7-be26-3d8ed7bf6ab8 ro quiet splash vt.handoff=7
  PulseList: Error: command ['pacmd', 'list'] failed with exit code 1: No PulseAudio daemon running, or not running as session daemon.
  RelatedPackageVersions:
   linux-restricted-modules-4.4.0-59-generic N/A
   linux-backports-modules-4.4.0-59-generic  N/A
   linux-firmware                            1.157.8
  RfKill:
   
  SourcePackage: linux
  UpgradeStatus: No upgrade log present (probably fresh install)
  WifiSyslog:
   
  dmi.bios.date: 02/26/2011
  dmi.bios.vendor: Dell Inc.
  dmi.bios.version: A02
  dmi.board.name: 06D7TR
  dmi.board.vendor: Dell Inc.
  dmi.board.version: A00
  dmi.chassis.type: 6
  dmi.chassis.vendor: Dell Inc.
  dmi.modalias: dmi:bvnDellInc.:bvrA02:bd02/26/2011:svnDellInc.:pnOptiPlex990:pvr01:rvnDellInc.:rn06D7TR:rvrA00:cvnDellInc.:ct6:cvr:
  dmi.product.name: OptiPlex 990
  dmi.product.version: 01
  dmi.sys.vendor: Dell Inc.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1669149/+subscriptions