Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0007104 [Squeak] Sound crash always 07-01-08 13:19 10-01-08 02:01
Reporter smithjonesetal View Status public  
Assigned To
Priority normal Resolution open  
Status new   Product Version 3.10.2
Summary 0007104: (SampledSound fromWaveFileNamed: ) play crashes on certain WAV files.
Description (SampledSound fromWaveFileNamed: 'c:\a.wav') play

This command, when issues with the following WAV file, crashes my system in Linux, and warns that the system's out of memory in Windows. This is somewhat strange, being as the WAV file is 141kb.

All the other WAV files that I have tried on both platforms work fine, but this particular WAV file causes the problem. I gained this WAV file through Gnome's Sound Recorder.

I have included the LowSpaceDebug.log that appears in Windows, the crash output that appears in Linux, 32bit, and the aforementioned WAV file.

Additional Information LowSpaceDebug.log on Windows
============================

Space is low
1 July 2008 2:02:38 pm

VM: Win32 - a SmalltalkImage
Image: Squeak3.10.2 [latest update: 0007179]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir G:
Trusted Dir G:\
Untrusted Dir C:\My Squeak\

SystemDictionary>>signalLowSpace
    Receiver: a SystemDictionary(lots of globals)
    Arguments and temporary variables:

    Receiver's instance variables:
        tally: 1940
        array: an Array(nil nil nil nil #SMInstaller->SMInstaller #EFontBDFFontReaderFo...etc...
        cachedClassNames: a SortedCollection(#ADPCMCodec #AIFFFileReader #ATestCase #Ab...etc...

ByteArray class(Behavior)>>basicNew:
    Receiver: ByteArray
    Arguments and temporary variables:
        sizeRequested: 2147418112
    Receiver's instance variables:
        superclass: ArrayedCollection
        methodDict: a MethodDictionary(#asByteArray->a CompiledMethod (2767) #asByteArr...etc...
        format: 1026
        instanceVariables: nil
        organization: ('accessing' asWideString atAllPut: byteAt: byteAt:put: byteSize ...etc...
        subclasses: {CompiledMethod . UUID}
        name: #ByteArray
        classPool: a Dictionary()
        sharedPools: nil
        environment: nil
        category: #'Collections-Arrayed'
        traitComposition: nil
        localSelectors: nil

ByteArray class(Behavior)>>new:
    Receiver: ByteArray
    Arguments and temporary variables:
        sizeRequested: 2147418112
    Receiver's instance variables:
        superclass: ArrayedCollection
        methodDict: a MethodDictionary(#asByteArray->a CompiledMethod (2767) #asByteArr...etc...
        format: 1026
        instanceVariables: nil
        organization: ('accessing' asWideString atAllPut: byteAt: byteAt:put: byteSize ...etc...
        subclasses: {CompiledMethod . UUID}
        name: #ByteArray
        classPool: a Dictionary()
        sharedPools: nil
        environment: nil
        category: #'Collections-Arrayed'
        traitComposition: nil
        localSelectors: nil

MultiByteFileStream(StandardFileStream)>>next:
    Receiver: MultiByteFileStream: 'e:\a.wav'
    Arguments and temporary variables:
        n: 2147418112
    Receiver's instance variables:



--- The full stack ---
SystemDictionary>>signalLowSpace
ByteArray class(Behavior)>>basicNew:
ByteArray class(Behavior)>>new:
MultiByteFileStream(StandardFileStream)>>next:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MultiByteFileStream>>next:
SampledSound class>>readWaveChunk:inRIFF:
SampledSound class>>fromWaveStream:
SampledSound class>>fromWaveFileNamed:
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection {[rcvr class evaluatorClass new evaluate: self selectionAsStream in: ctxt...]}
BlockContext>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>doIt
[] in TextMorphEditor(ParagraphEditor)>>doIt: {[self doIt]}
TextMorphEditor(Controller)>>terminateAndInitializeAround:
TextMorphEditor(ParagraphEditor)>>doIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnCharacter:with:
TextMorphEditor>>dispatchOnCharacter:with:
TextMorphEditor(ParagraphEditor)>>readKeyboard
TextMorphEditor>>readKeyboard
[] in TextMorphForEditView(TextMorph)>>keyStroke: {[editor readKeyboard]}
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
TextMorphForEditView>>handleInteraction:fromEvent:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self. ActiveEvent := anEvent. result := focusHolder han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h processEvents. capturingGesture := capturingGest...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]}
...etc...

Linux crash output:
===================

out of memory

-1450540440 Behavior>new:
-1450540532 StandardFileStream>next:
-1450540624 MultiByteFileStream>next:
-1450540716 >readWaveChunk:inRIFF:
-1450540808 >fromWaveStream:
-1450541152 >fromWaveFileNamed:
-1450541244 UndefinedObject>?
-1450544148 Compiler>evaluate:in:to:notifying:ifFail:logged:
-1450544480 [] in ParagraphEditor>evaluateSelection
-1450544664 BlockContext>on:do:
-1450544756 ParagraphEditor>evaluateSelection
-1450544892 ParagraphEditor>doIt
-1450544572 [] in ParagraphEditor>doIt:
-1450544984 Controller>terminateAndInitializeAround:
-1450545076 ParagraphEditor>doIt:
-1450545324 ParagraphEditor>dispatchOnCharacter:with:
-1450545416 TextMorphEditor>dispatchOnCharacter:with:
-1450545508 ParagraphEditor>readKeyboard
-1450545600 TextMorphEditor>readKeyboard
-1450546268 [] in TextMorph>keyStroke:
-1450546360 TextMorph>handleInteraction:fromEvent:
-1450546452 TextMorphForEditView>handleInteraction:fromEvent:
-1450546596 TextMorph>keyStroke:
-1450546688 TextMorphForEditView>keyStroke:
-1450546780 TextMorph>handleKeystroke:
-1450547148 KeyboardEvent>sentTo:
-1450547240 Morph>handleEvent:
-1450547332 Morph>handleFocusEvent:
-1450547056 [] in HandMorph>sendFocusEvent:to:clear:
-1450546964 [] in PasteUpMorph>becomeActiveDuring:
-1450547424 BlockContext>on:do:
-1450547516 PasteUpMorph>becomeActiveDuring:
-1450547700 HandMorph>sendFocusEvent:to:clear:
-1450547792 HandMorph>sendEvent:focus:clear:
-1450547924 HandMorph>sendKeyboardEvent:
-1450548016 HandMorph>handleEvent:
-1450548236 HandMorph>processEvents
-1450548144 [] in WorldState>doOneCycleNowFor:
-1450548328 SequenceableCollection>do:
-1450548420 WorldState>handsDo:
-1450548512 WorldState>doOneCycleNowFor:
-1450548696 WorldState>doOneCycleFor:
-1450548788 PasteUpMorph>doOneCycle
-1453592780 [] in >spawnNewProcess
-1453592596 [] in BlockContext>newProcess

Attached Files  a.wav [^] (144,804 bytes) 07-01-08 13:19

- Relationships

- Notes
(0012314 - 215 - 242 - 242 - 242 - 242 - 242)
nicolas cellier
07-01-08 17:27

It's not fair to try to allocate almost 2 GiBytes...
2147418112 printStringBase: 16 -> 16r7FFF0000.

1) there must be some corruption or byteEndianness problem in your .wav
2) A cool VM should fail but not crash
 
(0012315 - 188 - 188 - 188 - 188 - 188 - 188)
smithjonesetal
07-02-08 19:28

Quite. I agree there may well be something wrong with the WAV file, yet all the other applications I have tried play the WAV file perfectly well without the need to allocate 2 GB of space.
 
(0012316 - 396 - 474 - 474 - 474 - 474 - 474)
nicolas cellier
07-02-08 22:14

Well, xmms failed, and with play i can here the A, but get a warning:

play ~/Documents/a.wav

Input File : '/home/nicolas/Documents/a.wav'
Sample Size : 32-bit (4 bytes)
Sample Encoding: signed (2's complement)
Channels : 1
Sample Rate : 22050

Time: 00:01.64 [405:45.50] of 405:47.14 ( 0.0%) Output Buffer: 36.19Kplay wav: Premature EOF on .wav input file


Done.
 
(0012714 - 51 - 51 - 51 - 51 - 51 - 51)
Keith_Hodges
10-01-08 02:01

So what if anything needs to be done within squeak?
 

- Issue History
Date Modified Username Field Change
07-01-08 13:19 smithjonesetal New Issue
07-01-08 13:19 smithjonesetal File Added: a.wav
07-01-08 17:27 nicolas cellier Note Added: 0012314
07-02-08 19:28 smithjonesetal Note Added: 0012315
07-02-08 22:14 nicolas cellier Note Added: 0012316
10-01-08 02:01 Keith_Hodges Note Added: 0012714


Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
48 total queries executed.
35 unique queries executed.
Powered by Mantis Bugtracker