~pbzip2/pbzip2/bug-1399589-crash-on-compress-on-os-x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
Changes in 1.1.9 (NOT RELEASED YET)
- spec file refinement for rpm builds thanks to to Ville Skytta
- Makefile refinements
- close redirected stdout on finish for better AFS/NFS support (bug #1300876)
  Thanks to Richard Brittain 
Changes in 1.1.8 (Jun 10, 2012)
- Fix of metadata unpreserved on empty files compress (bug #1011021)
Changes in 1.1.7 (Dec 11, 2011)
- Fixed refusal to write to stdout on -dc from stdin (bug #886628)
- Fixed occasional failure on decompress with --ignore-trailing-garbage=1 
  with multiple bad blocks in the archive (bug #886625)
Changes in 1.1.6 (Oct 30, 2011)
- Fixed bug - deadlock due to unsynchronized broadcasts (bug #876686)
- Prevent deletion of input files on error (bug #874543)
- Document how to compress/decompress from standard input (bug #820525)
- Added more detailed kernel error messages (bug #874605)
- Error-handling fixes for multi-archive scenarios (bug #883782)
Changes in 1.1.5 (Jul 16, 2011)
- Fixed excessive output permissions while compress/decompress
  is in progress (bug #807536)
Changes in 1.1.4 (Apr 22, 2011)
- Fixed hang on decompress with --ignore-trailing-garbage=1 when
  producer is interrupted on trailing garbage (bug #762464)
- Added example to help for decompression piped to tar (bug #746806)
- Fixed typo in Trailing Garbage printed message (bug #746799)
Changes in 1.1.3 (Mar 27, 2011)
- Print trailing garbage errors even when in quiet mode (bug #743635)
- Default extension on decompress of .tbz2 changed to .tar for
  bzip2 compatibility (bug #743639)
- Fixed hang on decompress with --ignore-trailing-garbage=1 and higher
  numCPU (e.g. > 2) (bug #740502)
Changes in 1.1.2 (Feb 19, 2011)
- Fix directdecompress segfault when destination file can't be
  opened (e.g. read-only) (bug #717852)
- Implemented --ignore-trailing-garbage feature (bug #594868)
- Fixed hang on decompress of some truncated archives (bug #590225)
- Pulled an error check out of normal logic block for clarity
- Debug print added after BZ2_bzDecompress to track it's return code.
- A debug print fixed in queue::remove
- Increased max memory usage limit from 1GB to 2GB
- If no -m switch given on command line, default max memory limit
  will now automatically increase from 100 MB to minimum amount
  of memory required to support the number of CPUs requested
- Improved performance when output buffer is full
- Fixed bug which caused hang while decompressing prematurely
  truncated bzip2 stream
- Consumer_decompress throttling modified to prevent potential
  deadlock/infinite loop in certain situations (Thanks to Laszlo
  Ersek for finding and helping track down the cause of this bug)
- Fixed deadlock bug and performance issue when consumer working
  with long bzip2 sequences (Thanks to Tanguy Fautre for finding)
- Fixed error message for block size range (max size was wrong)
- Moved #include <pthread.h> from pbzip2.cpp to pbzip2.h to fix
  OS/2 compiler issue

Changes in 1.1.1 (Apr 17, 2010)
- Modified decompression to use low-level libbz2 API to improve
  performance of long bzip2 streams of large single-stream bzip2
  blocks
- This release should now decompress files created with bzip2
  at least as fast as bzip2 or slightly faster
- Handle decompression of long bzip2 streams incrementally
  instead of loading whole stream in memory at once
- Fixed issue in safe_cond_timed_wait which caused segmentation
  fault when compiled in DEBUG mode
- Fixed issue with Sun Studio compiler - required explicit
  declaration of static const members in .cpp

Changes in 1.1.0 (Mar 13, 2010)
- Added support for multi-threaded decompression using STDIN/pipes
- Added code to support throttling compression to prevent memory
  exhaustion with slow output pipe
- Added -m switch to specify max memory usage amount before
  throttling starts (default 100MB)
- Fixed bug that did not allow command line parameters to be used
  when compressing data from STDIN
- Added long options to man page and -h output
- Added --loadavg, --read long options
- Added support for CPU detection on Win32
- Major improvements to protection of shared variables, error and
  signal handling, program termination
- Added -S switch for thread stack size customization
  (needs USE_STACKSIZE_CUSTOMIZATION defined when compiling)
- Fixed command line parsing bug for -b, -p, -m switches
- Fixed infinite loop when fileWriter fails to create output
  file at start
- Fixed bug that deleted input filename (with .bz2 extension for 
  compression and without .bz2 extension for decompression) when
  a user interrupts process with CTRL-C while outputting to STDOUT
- Fixed bug where 0 byte files were not processed properly when
  data input from STDIN
- Ignores fwrite return and passes chown errors in writeFileMetaData
  if effective uid root
- OutputBuffer usage redesigned as fixed-size circular buffer
- Lots of minor bugs fixed (see AUTHORS or pbzip2.cpp for full details)
- Special thanks to Yavor Nikolov for providing the majority of
  contributions to this release and a significant amount of testing

Changes in 1.0.5 (Jan 08, 2009)
- Now properly complains about trying to read or write compressed
  data to terminal, and exits
- Further fixed CPU detection crash
- Updated Makefile to force deletion when cleaning

Changes in 1.0.4 (Dec 21, 2008)
- Added support to use pbzip2 with tar (--use-compress-prog=pbzip2).
- Added support for all remaining bzip2 command line options so
  pbzip2 can be used as a drop-in replacement for bzip2.
- Fixed bug that would cause pbzip2 to crash if detection of the
  number of processors failed.
- Now prevents uclibc from being exposed to its lack of a
  getloadavg function.

Changes in 1.0.3 (Oct 31, 2008)
- Added support for compression using stdin and pipes!  Thanks
  to Ivan Voras for supplying the patch to enable this feature.
- Added support for decompression using stdin and pipes but
  currently limited to only a single thread
- Added support for testing bzip2 files using stdin and pipes
- Added support to directly decompress files without using
  threads when files are small or the system only has 1 CPU.
  This mode is also used if the .bz2 file contains only 1
  bzip2 stream.
- Added support to compress 0 byte files like bzip2
- Added support for pbzcat symlink to automatically specify
  decompression mode to stdout, just like bzcat
- Increased max supported path and filename from 255 to 2048
  characters
- Updated RPM spec to support SUSE Linux
- Updated help display to show how many CPUs autodetect has found
- Code cleanup

Changes in 1.0.2 (Jul 25, 2007)
- Added support to directly compress files without using threads
  when files are smaller than the specified block size or the
  system only has 1 CPU.  This will speed things up considerably
  if you are compressing many small files.  You can also force
  this behaviour by using -p1
- Added support for pbunzip2 symlink to automatically specify
  decompression mode
- Changed pbzip2 exit code behaviour to match bzip2 for all error
  states (ie: trying to compress a file that already has a .bz2
  extension)

Changes in 1.0.1 (Mar 20, 2007)
- Added #ifdef PBZIP_NO_LOADAVG to remove load average code for
  UNIX systems that do not support it such as HP-UX and OSF1

Changes in 1.0 (Mar 14, 2007)
- Official non-beta release!
- Fixed minor memory leak in queueDelete()
- Added support for UNIX systems to modify max number of CPUs used
  based on load average 

Changes in 0.9.6 (Feb 05, 2006)
- Fixed bug that caused blocks to be missed by decompression
  routine under certain conditions

Changes in 0.9.5 (Dec 31, 2005)
- Changed default output to silent like bzip2 and added -v switch
  to make verbose
- Added support to autodetect number of CPUs on OSX
- Added support to compile on Borland and other Windows compilers
  using pthreads-win32 open source library
- Added decompression throttling in case too much backlog in filewriter
- Fixed bug from patch in 0.9.4 that limited file block size to 900k
- Fixed bug that caused file output to fail with some large files
- Fixed pthreads race condition that could cause random segfaults
- Fixed pthreads resource issue that prevented pbzip2 from compressing
  a large number of files at once

Changes in 0.9.4 (Aug 30, 2005)
- Fixed major bug that prevented pbzip2 from uncompressing files
  created with a BWT block size other than default 900k (oops!)
- Fixed some bugs in the command line parser
- Code cleanup
- Updated RPM spec to match Fedora Extras policy

Changes in 0.9.3 (Aug 22, 2005)
- Added sanity check to ensure integers are the size we expect
- Ported code to compile under MinGW in Windows
- Small code cleanup
- Added ChangeLog
- Added man page
- Added AUTHORS file
- Renamed LICENCE.txt to COPYING
- Renamed README.txt to README
- Updated RPM spec file in preparation for inclusion into Fedora Extras
- Moved ChangeLog info from pbzip2.cpp into this file
- Removed extra spaces/tabs in pbzip2.cpp

Changes in 0.9.2 (Mar 12, 2005)
- Created workaround for a major pthreads problem (on Linux at least)
  that would cause segfaults and missed signals in the pthreads
- Increased size of BZIP2 header match from 56 bits to 72 bits for more
  accurate detection
- Modified some buffers to use the vector class for easier memory
  management and to eliminate one read pass of the input data for
  decompression so should be slightly faster
- Now checks if input file exists before checking if output file
  already exists (when not using -f)
- Now checks to ensure input is regular file and not a directory before
  processing
- Now deletes input file only if output file exists and is greater than
  0 bytes (-k will always preserve input file)
- Now checks input file for bzip2 header before trying to decompress
  file
- Minor code cleanup

Changes in 0.9.1 (Jan 29, 2005)
- Fixed bug: -c switch now implies -k so input file is not deleted when
  data is output to stdout

Changes in 0.9 (Jan 24, 2005)
- Added -c switch for data output to stdout
- Added -t switch to test integrity of compressed data
- Added autodetection for # of CPUs on supported platforms and made
  detected value default # CPUs to use
- Fixed bug where pbzip2 processed 0 byte files
- Tried to make program exit codes the same as bzip2

Changes in 0.8.3 (Jan 9, 2005)
- Added support to maintain file metadata
- Added signal handling to cleanup partial files
- Added support to process multiple files

Changes in 0.8.2 (Nov 30, 2004)
- Added support for large (2GB+) files
- Added version info
- Made command line input more like bzip2
- Now checks if file is already .bz2 first

Changes in 0.8.1 (Nov 27, 2004)
- Fix pthread bug, now works on OSF1, code cleanup

Changes in 0.8 (Sep 6, 2004)
- Initial public release