Thank you for the follow up on this. This kind of problem can be very difficult to find and debug! Dave On Wed, Mar 07, 2018 at 04:30:33PM +0100, Sabine Manaa wrote:
Now I know the reason for the crashes. I did a lot of log writing when creating my reports (they use OSSubprocess). This was only for debugging. Removing them removed the problem. OSProcess and OSSubprocess are not guilty :-)
I can crash the image with this (try several times) (in /opt/local/bin/convert there is imagemagick):
1000 timesRepeat: [ | theFileName theStream thePath theFullPathAndFilename isFileNew | OSSUnixSubprocess new shellCommand: '/opt/local/bin/convert -background white -alpha remove -density 200 /Library/WebServer/Documents/reports/201801231322-419088218-250457/20170227_19_messdefuerhunde_Fahrten.pdf /Library/WebServer/Documents/reports/201801231322-419088218-250457/20170227_19_messdefuerhunde_Fahrten_%02d.png'; redirectStdout; run. thePath := '/data/db/' asFileReference. thePath exists ifFalse: [ thePath createDirectory ]. theFileName := 'HALLO_' , Date today yyyymmdd , '.txt'. theFullPathAndFilename := ('/data/db/' , theFileName) asFileReference . theFullPathAndFilename asFileReference exists ifTrue: [ isFileNew := false. theStream := MultiByteFileStream oldFileNamed: theFullPathAndFilename. theStream position: theStream size. theStream crlf ] ifFalse: [ isFileNew := true. theStream := MultiByteFileStream newFileNamed: theFullPathAndFilename ]. [ isFileNew ifTrue: [ theStream nextPutAll: Time now printString; nextPutAll: Time now printString; nextPutAll: Time now printString; nextPutAll: Time now printString; nextPutAll: Time now printString; nextPutAll: Time now printString; nextPutAll: Time now printString; crlf ]. theStream nextPutAll:'' ] ensure: [ theStream close ]. ].
2018-03-07 2:16 GMT+01:00 David T. Lewis <lewis@mail.msen.com>:
On Tue, Mar 06, 2018 at 11:49:14AM +0100, Sabine Manaa wrote:
Hi,
I can report the following:
The problem with the Buffer overflow remains also with OSProcess. Also with the normal vm (https://get.pharo.org ).
Summary: I have buffer overflow crashes with my application on Linux. The same code runs without problems on MacOS and on Windows. I have the same test data/database and do exactly the same.
The problem occurs only after calling several times OSProcess/OSSubprocess. This is the reason why I first had a suspicion that OSSubprocess is responsible for the crashes.
Can anyone tell me how to proceed to find the reason for the buffer overflow? There is no PharoDebug.log
Help is very appreciated!
This is the message when terminating:
root@Pharo_ubuntu_16:/spf/build# ./pharo Pharo-Productive-SPF.image --no-quit
SmalltalkImageInstanceID class>>startUp*** buffer overflow detected ***: /spf/build/pharo-vm/lib/pharo/5.0-201707201942/pharo terminated
What is class SmalltalkImageInstanceID? I have a Pharo 6.1 image, and I am running on Ubuntu. I loaded OSProcess to check this out, but I am not sure what that #startUp message is doing.
Thanks, Dave