Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-07 Thread Graham Jones
Guys thanks so much for taking this discussion further than just the reported 
bug that prevented the existing workaround. 
I’ve often considered putting this work in myself but wasn’t sure what the 
reason was for this not being in bash already and if there was an architectural 
difficulty with implementing it. It sounds more like that it just wasn’t 
considered as an option rather than there is a problem implementing it. 

Given that ksh only ever worked this way (but its shared history performed 
flawlessly)l, I would think that the mechanism they used and particularly how 
they handled the locking is a good place to start with.  

GJ

 On 7 Nov 2014, at 11:29 pm, Piotr Grzybowski narsil...@gmail.com wrote:
 
 On Fri, Nov 7, 2014 at 1:26 PM, Eric Blake ebl...@redhat.com wrote:
 
 Named pipes (aka fifos) are notorious for being buggy on Cygwin and
 non-available on mingw.
 
 thanks Eric. good news.
 so this means, that shared history can only be implemented using
 regular files. is that right?
 
 cheers,
 pg




Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-05 Thread Graham Jones

 On 6 Nov 2014, at 9:11 am, Piotr Grzybowski narsil...@gmail.com wrote:
 
 On Wed, Nov 5, 2014 at 2:57 PM, Chet Ramey chet.ra...@case.edu wrote:
 I still can't reproduce it on OS X 10.10: [..]
 
 not only I cannot reproduce it at the moment, but also I have reached
 the following state (user: root):
 
 # cat .bash_history
 ls -al
 #1415144153
 ls -al .bash_history
 #1415144154
 pwd
 #1415144159
 rm .bash_history
 #1415144161
 cd
 #1415144163
 pwd
 #1415144165
 rm .bash_history
 #1415144171
 i=0; while [ $i -lt 64 ]; do history -a; history -n; let i++; done;
 
 # ls -alh .bash_history
 -rw---  1 root  wheel   9.0M Nov  5 22:59 .bash_history
 
 # du -sh .bash_history
 9.0M.bash_history
 
 # hexdump -C .bash_history
   6c 73 20 2d 61 6c 20 0a  23 31 34 31 35 31 34 34  |ls -al .#1415144|
 0010  31 35 33 0a 6c 73 20 2d  61 6c 20 2e 62 61 73 68  |153.ls -al .bash|
 0020  5f 68 69 73 74 6f 72 79  20 0a 23 31 34 31 35 31  |_history .#14151|
 0030  34 34 31 35 34 0a 70 77  64 0a 23 31 34 31 35 31  |44154.pwd.#14151|
 0040  34 34 31 35 39 0a 72 6d  20 2e 62 61 73 68 5f 68  |44159.rm .bash_h|
 0050  69 73 74 6f 72 79 20 0a  23 31 34 31 35 31 34 34  |istory .#1415144|
 0060  31 36 31 0a 63 64 0a 23  31 34 31 35 31 34 34 31  |161.cd.#14151441|
 0070  36 33 0a 70 77 64 0a 23  31 34 31 35 31 34 34 31  |63.pwd.#14151441|
 0080  36 35 0a 72 6d 20 2e 62  61 73 68 5f 68 69 73 74  |65.rm .bash_hist|
 0090  6f 72 79 20 0a 23 31 34  31 35 31 34 34 31 37 31  |ory .#1415144171|
 00a0  0a 69 3d 30 3b 20 77 68  69 6c 65 20 5b 20 24 69  |.i=0; while [ $i|
 00b0  20 2d 6c 74 20 36 34 20  5d 3b 20 64 6f 20 68 69  | -lt 64 ]; do hi|
 00c0  73 74 6f 72 79 20 2d 61  3b 20 68 69 73 74 6f 72  |story -a; histor|
 00d0  79 20 2d 6e 3b 20 6c 65  74 20 69 2b 2b 3b 20 64  |y -n; let i++; d|
 00e0  6f 6e 65 3b 0a 00 00 00  00 00 00 00 00 00 00 00  |one;|
 00f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ||
 *
 00902b60
 
 which puzzles me a bit.
 Now I lost even all my while-loop commands! :)
 Graham: did you actually logout and removed the history file, and
 therefore started fresh? Sorry I guess I lost track of what is going
 on here.
I did. We in terms of “logout”, I had a singe terminal session open. I unlinked 
the history file and then ctrl-Dd that last session to close it. When I created 
a new one, it was created and empty.

 
 cheers,
 pg




Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-05 Thread Graham Jones
Just out of curiosity, this mechanism is obviously something of a work around 
to give bash a single shared history in the same style as ksh had. 
Has there ever been any thought of providing a mechanism to support a single 
history session in a more native way? I know that zsh has the setopt 
share_history option to provide this (as I’ve tried this before finding I can’t 
get on with zsh for other reasons). Is there something about the way the 
history works in bash that makes it difficult to implement?

 On 6 Nov 2014, at 9:11 am, Piotr Grzybowski narsil...@gmail.com wrote:
 
 On Wed, Nov 5, 2014 at 2:57 PM, Chet Ramey chet.ra...@case.edu wrote:
 I still can't reproduce it on OS X 10.10: [..]
 
 not only I cannot reproduce it at the moment, but also I have reached
 the following state (user: root):
 
 # cat .bash_history
 ls -al
 #1415144153
 ls -al .bash_history
 #1415144154
 pwd
 #1415144159
 rm .bash_history
 #1415144161
 cd
 #1415144163
 pwd
 #1415144165
 rm .bash_history
 #1415144171
 i=0; while [ $i -lt 64 ]; do history -a; history -n; let i++; done;
 
 # ls -alh .bash_history
 -rw---  1 root  wheel   9.0M Nov  5 22:59 .bash_history
 
 # du -sh .bash_history
 9.0M.bash_history
 
 # hexdump -C .bash_history
   6c 73 20 2d 61 6c 20 0a  23 31 34 31 35 31 34 34  |ls -al .#1415144|
 0010  31 35 33 0a 6c 73 20 2d  61 6c 20 2e 62 61 73 68  |153.ls -al .bash|
 0020  5f 68 69 73 74 6f 72 79  20 0a 23 31 34 31 35 31  |_history .#14151|
 0030  34 34 31 35 34 0a 70 77  64 0a 23 31 34 31 35 31  |44154.pwd.#14151|
 0040  34 34 31 35 39 0a 72 6d  20 2e 62 61 73 68 5f 68  |44159.rm .bash_h|
 0050  69 73 74 6f 72 79 20 0a  23 31 34 31 35 31 34 34  |istory .#1415144|
 0060  31 36 31 0a 63 64 0a 23  31 34 31 35 31 34 34 31  |161.cd.#14151441|
 0070  36 33 0a 70 77 64 0a 23  31 34 31 35 31 34 34 31  |63.pwd.#14151441|
 0080  36 35 0a 72 6d 20 2e 62  61 73 68 5f 68 69 73 74  |65.rm .bash_hist|
 0090  6f 72 79 20 0a 23 31 34  31 35 31 34 34 31 37 31  |ory .#1415144171|
 00a0  0a 69 3d 30 3b 20 77 68  69 6c 65 20 5b 20 24 69  |.i=0; while [ $i|
 00b0  20 2d 6c 74 20 36 34 20  5d 3b 20 64 6f 20 68 69  | -lt 64 ]; do hi|
 00c0  73 74 6f 72 79 20 2d 61  3b 20 68 69 73 74 6f 72  |story -a; histor|
 00d0  79 20 2d 6e 3b 20 6c 65  74 20 69 2b 2b 3b 20 64  |y -n; let i++; d|
 00e0  6f 6e 65 3b 0a 00 00 00  00 00 00 00 00 00 00 00  |one;|
 00f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ||
 *
 00902b60
 
 which puzzles me a bit.
 Now I lost even all my while-loop commands! :)
 Graham: did you actually logout and removed the history file, and
 therefore started fresh? Sorry I guess I lost track of what is going
 on here.
 
 cheers,
 pg



Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-05 Thread Graham Jones
Thanks Chet. 

Couple of notes:

1) I’m not setting HISTFILESIZE, only HISTSIZE. HISTFILESIZE is getting set for 
me based on my choice of HISTSIZE (though I assume this is something that bash 
does that you know about). 
2) As mentioned in the initial bug report, if I set PROMPT_COMMAND='history -a; 
history -r’ in my profile, my terminal was immediately hanging on 
initialisation. Since reseting the history file though, this no longer seems to 
be the case. 

 On 6 Nov 2014, at 1:25 pm, Chet Ramey chet.ra...@case.edu wrote:
 
 On 11/4/14 5:16 PM, Piotr Grzybowski wrote:
 Chet: for reasons unexplained calls to read_history_range at
 
 history.def:219
 219   result = read_history_range (filename, history_lines_in_file, 
 -1);
 
 return more and more records (77824 is above my HISTFILESIZE):
 
 There is an issue with this particular, relatively infrequent, set of
 circumstances:
 
 1. HISTFILESIZE  HISTSIZE
 2. Actual size of the history file  HISTSIZE
 3. history list contains HISTSIZE entries
 4. the user executes a sequence of `history -a; history -n'.  Even
   `history -a; history -r' would probably prevent this, at the cost
   of more malloc/free operations.
 
 In this case, history_lines_in_file (which, despite its name, is supposed
 to keep track of how many lines bash has read from the history file) is
 calculated incorrectly.  The result is that bash reads way too many lines
 from the history file each time.
 
 There are a couple of ways to fix it: one that uses facilities the history
 library provides today and one that changes the history library to expose
 the values more directly.  One will appear in the next snapshot.
 
 Chet
 
 -- 
 ``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
 Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/




Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-04 Thread Graham Jones

 On 5 Nov 2014, at 4:49 am, Piotr Grzybowski narsil...@gmail.com wrote:
 
 Hi,
 
 reproducible on mac os x 10.6.8
Really? Very interesting.
I assume that it’s not reproducible with the version of bash that ships with 
10.6.8 however?

 This is free software; you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 
 Graham: could you please send the output of these commands:
 
 # cat .bash_history | wc -l
 # echo $HISTFILESIZE
 # echo $HISTSIZE
 
 it obviously happens when you are almost at the level of
 $HISTFILESIZE with `cat .bash_history | wc -l`.
Not at all.  I keep my history for a long time and have an arbitrarily large 
HISTSIZE. However, after the recent Yosemite upgrade, histories were truncated, 
so it’s relatively empty and nowhere near the level of HISTFILESIZE after the 
20 or so returns that I enter reproduce it (and I’m not sure that just hitting 
enter even puts anything in the history).

Here are the details you wanted:
graham@zebedee:~$ set | grep HIST
HISTFILE=/Users/graham/.bash_history
HISTFILESIZE=50
HISTSIZE=50
graham@zebedee:~$ wc -l $HISTFILE
  21 /Users/graham/.bash_history


 
 cheers,
 pg
 
 
 
 On Tue, Nov 4, 2014 at 2:54 PM, Chet Ramey chet.ra...@case.edu wrote:
 On 11/3/14 5:08 PM, Graham Jones wrote:
 These are for:
 bash --version
 GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)
 
 This trace looks pretty reasonable.  Maybe you could temporarily move your
 history file to some other name and see if you can reproduce this behavior
 starting fresh with an empty history file.
 
 Chet
 
 --
 ``The lyf so short, the craft so long to lerne.'' - Chaucer
 ``Ars longa, vita brevis'' - Hippocrates
 Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/
 



Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-04 Thread Graham Jones

 On 5 Nov 2014, at 12:54 am, Chet Ramey chet.ra...@case.edu wrote:
 
 On 11/3/14 5:08 PM, Graham Jones wrote:
 These are for:
 bash --version
 GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)
 
 This trace looks pretty reasonable.  Maybe you could temporarily move your
 history file to some other name and see if you can reproduce this behavior
 starting fresh with an empty history file.
As you may have seen from the other email, the history file is relatively 
small. 
I did just remove it and start afresh, and the issue still occurs. 
Whilst attempting to reproduce it, I noticed that is doesn’t reoccur 
immediately. 
In my first test, I deleted the history file and closing that session (the only 
one). When I created a single terminal session, I could su to root and hit 
return a large number of times without it reproducing the error. I need created 
another terminal session and (without suing) after issue just a single command, 
the next command on the root terminal exhibited the behaviour.
I retried a similar experiment, again after removing the history file, and 
again it wasn’t immediately reproducible. This time I didn’t create a second 
session but left the terminal along for 3 or 4 minutes. When I next entered a 
command the behaviour has returned. 
In both cases the line count in $HISTFILE was low = ~40.

Now after performing these to experiments I just tried to create a new session 
and found my $HISTFILE owned by root (or at least permission denied, I didn’t 
actually check the file mode and owner before chmoding it). This seems strange 
given I never log in as root only su so presumably the first command executed 
must always be by my own user. 

After chmoding it, I notice this:
graham@zebedee:~$ wc -l $HISTFILE
  51 /Users/graham/.bash_history

I have obviously not entered that many commands!

Immediately after I go to check the contents and it’s owned by root again
graham@zebedee:~$ wc -l $HISTFILE
wc: /Users/graham/.bash_history: open: Permission denied
graham@zebedee:~$ l $HISTFILE
-rw---  1 root  staff  150  4 Nov 21:36 /Users/graham/.bash_history
graham@zebedee:~$ ps aux |grep bash
graham  99600   0.0  0.0  2432772648 s000  S+9:40pm   0:00.00 
grep bash
graham  99555   0.0  0.5  2492596  39076 s000  S 9:36pm   0:00.49 
-bash

But yet there is only my bash running non-priveledge. 

Now I was expecting a hole in the file, but when I finally get to see the 
contents, I have 500,000 ls commands in there (one of my test commands from 
above)
graham@zebedee:~$ wc -l $HISTFILE
wc: /Users/graham/.bash_history: open: Permission denied
graham@zebedee:~$ sudo chown graham $HISTFILE
Password:
graham@zebedee:~$ sort $HISTFILE | uniq -c | sort -n
   1 sudo chown graham $HISTFILE
   1 vi $HISTFILE
50 ls


 
 Chet
 
 -- 
 ``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
 Chet Ramey, ITS, CWRUc...@case.eduhttp://cnswww.cns.cwru.edu/~chet/



Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-03 Thread Graham Jones
These are for:
bash --version
GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)

lldb backtrace:
(lldb) process attach --pid 5955
Process 5955 stopped
Executable module set to /usr/local/bin/bash.
Architecture set to: x86_64h-apple-macosx.
(lldb) bt
* thread #1: tid = 0x169339, 0x0001020421c0 bash`add_history + 160, queue = 
'com.apple.main-thread', stop reason = signal SIGSTOP
  * frame #0: 0x0001020421c0 bash`add_history + 160
frame #1: 0x00010204565c bash`read_history_range + 540
frame #2: 0x000102009719 bash`history_builtin + 1433
frame #3: 0x000101fbda9e bash`execute_builtin + 590
frame #4: 0x000101fbb941 bash`execute_command_internal + 17457
frame #5: 0x000101fb8c44 bash`execute_command_internal + 5940
frame #6: 0x000102006104 bash`parse_and_execute + 916
frame #7: 0x000101fa8da6 bash`execute_variable_command + 374
frame #8: 0x000101fa5ef6 bash`parse_command + 86
frame #9: 0x000101fa5e5f bash`read_command + 223
frame #10: 0x000101fa5c84 bash`reader_loop + 468
frame #11: 0x000101fa506c bash`main + 6620
frame #12: 0x7fff886f15c9 libdyld.dylib`start + 1
frame #13: 0x7fff886f15c9 libdyld.dylib`start + 1
(lldb) thread list
Process 5955 stopped
* thread #1: tid = 0x169339, 0x0001020421c0 bash`add_history + 160, queue = 
'com.apple.main-thread', stop reason = signal SIGSTOP

dtruss -a:
root@zebedee:~# dtruss -p 5955 -a
Invalid connection: com.apple.coresymbolicationd
PID/THRD  RELATIVE  ELAPSDCPU SYSCALL(args)  = 
return
 5955/0x169339:  57713743 114  2 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051859 0
 5955/0x169339:  57723064  71  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051859 0
 5955/0x169339:  59167979  61  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051861 0
 5955/0x169339:  59177993  63  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051861 0
 5955/0x169339:  60645254  62  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051862 0
 5955/0x169339:  60655370   6  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051862 0
 5955/0x169339:  60635499  60  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051862 0
 5955/0x169339:  62072822  87  3 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051864 0
 5955/0x169339:  63511141  62  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051865 0
 5955/0x169339:  63520959  88  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051865 0
 5955/0x169339:  63531242   7  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051865 0
 5955/0x169339:  65032419  61  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051867 0
 5955/0x169339:  65042389   6  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
0x4D27BB) = 1415051867 0
 5955/0x169339:  66134657  65  2 madvise(0x103442000, 0x4D3000, 0x9)
 = 0 0
 5955/0x169339:  66135208 554550 madvise(0x103442000, 0x4D3000, 0x7)
 = 0 0
 5955/0x169339:  66135269  31 27 stat64(/var/mail/root\0, 
0x7FFF5DC5C618, 0x7) = -1 Err#2
 5955/0x169339:  66135303   4  1 sigprocmask(0x1, 0x7FFF5DC5C6BC, 
0x7FFF5DC5C6B8)= 0x0 0
 5955/0x169339:  66135308   5  2 ioctl(0xFF, 0x4004667A, 
0x7FFF5DC5C60C) = 0 0
 5955/0x169339:  66135318  11  9 ioctl(0xFF, 0x80047476, 
0x7FFF5DC5C68C) = 0 0
 5955/0x169339:  66135320   3  0 sigprocmask(0x3, 0x7FFF5DC5C6B8, 0x0)  
 = 0x0 0
 5955/0x169339:  66135322   3  0 sigaction(0x2, 0x7FFF5DC5C688, 
0x7FFF5DC5C6B0)  = 0 0
 5955/0x169339:  66135351   3  1 ioctl(0x0, 0x40087468, 0x7FFF5DC5C638) 
 = 0 0
 5955/0x169339:  66135353   3  2 ioctl(0x0, 0x80087467, 0x7FFF5DC5C638) 
 = 0 0
 5955/0x169339:  66135354   2  0 ioctl(0x0, 0x40487413, 0x7FFF5DC5C640) 
 = 0 0
 5955/0x169339:  66135359   5  3 ioctl(0x0, 0x80487415, 0x7FFF5DC5C640) 
 = 0 0
 5955/0x169339:  66135361   2  0 sigprocmask(0x1, 0x102073E14, 
0x102073E18)  = 0x0 0
 5955/0x169339:  66135362   2  0 sigaction(0x2, 0x7FFF5DC5C638, 
0x7FFF5DC5C698)  = 0 0
 5955/0x169339:  66135362   2  0 sigaction(0xF, 0x7FFF5DC5C638, 
0x7FFF5DC5C698)  = 0 0
 5955/0x169339:  66135363   2  0 sigaction(0x1, 0x7FFF5DC5C638, 
0x7FFF5DC5C698)  = 0 0
 5955/0x169339:  66135364   1  0 sigaction(0x3, 0x7FFF5DC5C638, 
0x7FFF5DC5C698)  = 0 0
 5955/0x169339:  66135364   2  0 sigaction(0x3, 0x7FFF5DC5C638, 
0x7FFF5DC5C678)  = 0 0
 5955/0x169339:  66135365   1  0 sigaction(0xE, 0x7FFF5DC5C638, 

Re: PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-11-03 Thread Graham Jones
Resend with missing stats for truss after ctrl-C
 On 4 Nov 2014, at 9:08 am, Graham Jones your-name-h...@grahamjones.org 
 wrote:
 
 These are for:
 bash --version
 GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)
 
 lldb backtrace:
 (lldb) process attach --pid 5955
 Process 5955 stopped
 Executable module set to /usr/local/bin/bash.
 Architecture set to: x86_64h-apple-macosx.
 (lldb) bt
 * thread #1: tid = 0x169339, 0x0001020421c0 bash`add_history + 160, queue 
 = 'com.apple.main-thread', stop reason = signal SIGSTOP
   * frame #0: 0x0001020421c0 bash`add_history + 160
 frame #1: 0x00010204565c bash`read_history_range + 540
 frame #2: 0x000102009719 bash`history_builtin + 1433
 frame #3: 0x000101fbda9e bash`execute_builtin + 590
 frame #4: 0x000101fbb941 bash`execute_command_internal + 17457
 frame #5: 0x000101fb8c44 bash`execute_command_internal + 5940
 frame #6: 0x000102006104 bash`parse_and_execute + 916
 frame #7: 0x000101fa8da6 bash`execute_variable_command + 374
 frame #8: 0x000101fa5ef6 bash`parse_command + 86
 frame #9: 0x000101fa5e5f bash`read_command + 223
 frame #10: 0x000101fa5c84 bash`reader_loop + 468
 frame #11: 0x000101fa506c bash`main + 6620
 frame #12: 0x7fff886f15c9 libdyld.dylib`start + 1
 frame #13: 0x7fff886f15c9 libdyld.dylib`start + 1
 (lldb) thread list
 Process 5955 stopped
 * thread #1: tid = 0x169339, 0x0001020421c0 bash`add_history + 160, queue 
 = 'com.apple.main-thread', stop reason = signal SIGSTOP
 
 dtruss -a:
 root@zebedee:~# dtruss -p 5955 -a
 Invalid connection: com.apple.coresymbolicationd
   PID/THRD  RELATIVE  ELAPSDCPU SYSCALL(args)  = 
 return
  5955/0x169339:  57713743 114  2 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051859 0
  5955/0x169339:  57723064  71  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051859 0
  5955/0x169339:  59167979  61  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051861 0
  5955/0x169339:  59177993  63  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051861 0
  5955/0x169339:  60645254  62  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051862 0
  5955/0x169339:  60655370   6  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051862 0
  5955/0x169339:  60635499  60  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051862 0
  5955/0x169339:  62072822  87  3 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051864 0
  5955/0x169339:  63511141  62  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051865 0
  5955/0x169339:  63520959  88  1 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051865 0
  5955/0x169339:  63531242   7  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051865 0
  5955/0x169339:  65032419  61  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051867 0
  5955/0x169339:  65042389   6  0 gettimeofday(0x7FFF5DC5CAA0, 0x0, 
 0x4D27BB)   = 1415051867 0
  5955/0x169339:  66134657  65  2 madvise(0x103442000, 0x4D3000, 0x9)  
  = 0 0
  5955/0x169339:  66135208 554550 madvise(0x103442000, 0x4D3000, 0x7)  
  = 0 0
  5955/0x169339:  66135269  31 27 stat64(/var/mail/root\0, 
 0x7FFF5DC5C618, 0x7)   = -1 Err#2
  5955/0x169339:  66135303   4  1 sigprocmask(0x1, 0x7FFF5DC5C6BC, 
 0x7FFF5DC5C6B8)  = 0x0 0
  5955/0x169339:  66135308   5  2 ioctl(0xFF, 0x4004667A, 
 0x7FFF5DC5C60C)   = 0 0
  5955/0x169339:  66135318  11  9 ioctl(0xFF, 0x80047476, 
 0x7FFF5DC5C68C)   = 0 0
  5955/0x169339:  66135320   3  0 sigprocmask(0x3, 0x7FFF5DC5C6B8, 
 0x0) = 0x0 0
  5955/0x169339:  66135322   3  0 sigaction(0x2, 0x7FFF5DC5C688, 
 0x7FFF5DC5C6B0)= 0 0
  5955/0x169339:  66135351   3  1 ioctl(0x0, 0x40087468, 
 0x7FFF5DC5C638)= 0 0
  5955/0x169339:  66135353   3  2 ioctl(0x0, 0x80087467, 
 0x7FFF5DC5C638)= 0 0
  5955/0x169339:  66135354   2  0 ioctl(0x0, 0x40487413, 
 0x7FFF5DC5C640)= 0 0
  5955/0x169339:  66135359   5  3 ioctl(0x0, 0x80487415, 
 0x7FFF5DC5C640)= 0 0
  5955/0x169339:  66135361   2  0 sigprocmask(0x1, 0x102073E14, 
 0x102073E18)= 0x0 0
  5955/0x169339:  66135362   2  0 sigaction(0x2, 0x7FFF5DC5C638, 
 0x7FFF5DC5C698)= 0 0
  5955/0x169339:  66135362   2  0 sigaction(0xF, 0x7FFF5DC5C638, 
 0x7FFF5DC5C698)= 0 0
  5955/0x169339:  66135363   2  0 sigaction(0x1, 0x7FFF5DC5C638, 
 0x7FFF5DC5C698)= 0 0
  5955/0x169339:  66135364   1  0 sigaction(0x3

PROMPT_COMMAND='history -a; history -n' causes shell hang in OX 10.10 Yosemite / bash 3.2.53

2014-10-29 Thread Graham Jones
Since upgrading to OS X 10.10 Yosemite and thus bash 3.2.53 use of the 
PROMPT_COMMAND='history -a; history -n'
workaround to get a single ksh-style history causes the shell to become less 
and less responsive until it permanently hangs.

The problem is somewhat intermitant in terms of how quickly it starts, but it's 
more pronounced after a su - to root (or probably any su). It can be readily 
reproduced by:
1) Putting the above command in your .bashrc file
2) Start a new terminal session
3) su -
4) Hit return around 20-40 times (optionally entering commands)
5) Watch as the prompt returns more and more slowly, then never at all, and PS 
reports ~98% CPU usage for bash.

For a complete description, please see this stack exchange post:
http://apple.stackexchange.com/questions/153361/prompt-command-history-a-history-n-changed-broken-in-yosemite-bash-3-2
 
http://apple.stackexchange.com/questions/153361/prompt-command-history-a-history-n-changed-broken-in-yosemite-bash-3-2