[Sugar-devel] Etoys mp3 files

Ajay Garg ajay at activitycentral.com
Wed May 30 04:53:57 EDT 2012


For brevity, here is the complete stacktrace (picked from shell command
line) ::


##################################################################################################
=========== SqueakDebug.log START ==========
Error: a primitive has failed
30 May 2012 2:21 pm

VM: unix - a SmalltalkImage
Image: etoys4.1 [latest update: #2390]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/ajay/Etoys
Trusted Dir /home/ajay/.etoys/private
Untrusted Dir /home/ajay/Etoys

MPEGFile class(Object)>>error:
    Receiver: MPEGFile
    Arguments and temporary variables:
        aString:     'a primitive has failed'
    Receiver's instance variables:
        superclass:     Object
        methodDict:     a MethodDictionary(#audioChannels:->a
CompiledMethod (1113) #audioG...etc...
        format:     138
        instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
'endianness')
        organization:     ('access' endianness fileHandle fileName
getPercentage getTOC:doS...etc...
        subclasses:     nil
        name:     #MPEGFile
        classPool:     a Dictionary(#Registry->nil )
        sharedPools:     nil
        environment:     a SystemDictionary(lots of globals)
        category:     nil

MPEGFile class(Object)>>primitiveFailed
    Receiver: MPEGFile
    Arguments and temporary variables:

    Receiver's instance variables:
        superclass:     Object
        methodDict:     a MethodDictionary(#audioChannels:->a
CompiledMethod (1113) #audioG...etc...
        format:     138
        instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
'endianness')
        organization:     ('access' endianness fileHandle fileName
getPercentage getTOC:doS...etc...
        subclasses:     nil
        name:     #MPEGFile
        classPool:     a Dictionary(#Registry->nil )
        sharedPools:     nil
        environment:     a SystemDictionary(lots of globals)
        category:     nil

MPEGFile class>>primFileValidMPEG:
    Receiver: MPEGFile
    Arguments and temporary variables:
        aPath:     '/home/ajay/Desktop/DELTA.MPG'
    Receiver's instance variables:
        superclass:     Object
        methodDict:     a MethodDictionary(#audioChannels:->a
CompiledMethod (1113) #audioG...etc...
        format:     138
        instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
'endianness')
        organization:     ('access' endianness fileHandle fileName
getPercentage getTOC:doS...etc...
        subclasses:     nil
        name:     #MPEGFile
        classPool:     a Dictionary(#Registry->nil )
        sharedPools:     nil
        environment:     a SystemDictionary(lots of globals)
        category:     nil

MPEGFile class>>isFileValidMPEG:
    Receiver: MPEGFile
    Arguments and temporary variables:
        path:     '/home/ajay/Desktop/DELTA.MPG'
    Receiver's instance variables:
        superclass:     Object
        methodDict:     a MethodDictionary(#audioChannels:->a
CompiledMethod (1113) #audioG...etc...
        format:     138
        instanceVariables:     #('pathToFile' 'fileBits' 'fileIndex'
'endianness')
        organization:     ('access' endianness fileHandle fileName
getPercentage getTOC:doS...etc...
        subclasses:     nil
        name:     #MPEGFile
        classPool:     a Dictionary(#Registry->nil )
        sharedPools:     nil
        environment:     a SystemDictionary(lots of globals)
        category:     nil


--- The full stack ---
MPEGFile class(Object)>>error:
MPEGFile class(Object)>>primitiveFailed
MPEGFile class>>primFileValidMPEG:
MPEGFile class>>isFileValidMPEG:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MPEGDisplayMorph>>openFileNamed:
MPEGDisplayMorph>>openMPEGFile
SimpleButtonMorph>>doButtonAction
SimpleButtonMorph>>mouseUp:
SimpleButtonMorph(Morph)>>handleMouseUp:
MouseButtonEvent>>sentTo:
SimpleButtonMorph(Morph)>>handleEvent:
SimpleButtonMorph(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>>sendMouseEvent:
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]}
[] in BlockContext>>newProcess {[self value.  Processor terminateActive]}
##################################################################################################

On Wed, May 30, 2012 at 10:59 AM, Ajay Garg <ajay at activitycentral.com>wrote:

> Thanks Bert for the reply.
>
> I downloaded the source from
> http://www.squeakvm.org/unix/release/Squeak-4.4.7.2357-src.tar.gz, did
> "make" and "sudo make install".
>
> It seemed to work, but there was no improvement while playing "Supplies"
> -> "Object Catalogue" -> "Multimedia" -> "MPEGPlayer" ->''DELTA.MPG".
>
> One thing I noted that all plugins file are of form "so.*", whereas I
> believe that in unix they should be of the form "*.so". For example, the
> generated Mpeg3Plugin file is "so.Mpeg3Plugin", and not "Mpeg3Plugin.so" -
> something which is expected for shared-object files in the unix world.
>
> Am I missing something?
>
>
> Thanks and Regards,
> Ajay
>
>
> On Wed, May 30, 2012 at 2:25 AM, Bert Freudenberg <bert at freudenbergs.de>wrote:
>
>> So problem a) is Sugar, problem b) squeak. I'll ignore a). For b):
>>
>> You do not need gstreamer, but rather Squeak's Mpeg3Plugin which has its
>> own decoder. This is not shipped in Fedora due to mp3 licensing concerns.
>> You need to copy it from an old UY bundle (there might be a x86 copy in
>> some tracker ticket on d.l.o). If need be you can also compile it from a
>> Squeak VM source tar ball (likely needed for ARM).
>>
>> - Bert -
>>
>> On 29.05.2012, at 22:26, Ajay Garg <ajay at activitycentral.com> wrote:
>>
>> Well, there are two different issues ::
>>
>> a)
>> First is the data-store issue.
>>
>> As seen from the logs, the (mp3) file that was opened, was present in a
>> USB pen drive.
>> ANY ENTRY, when accessed via USB-pen-drive, will give this error (i.e.
>> mp3, jpeg, png - any file).
>>
>> CAUSE ::
>> =======
>>
>> The code in "carquinol" package, presumes the data-to-be-accessed coming
>> from the journal.
>>
>>
>>
>> SOLUTION ::
>> ==========
>>
>> As happens with all entries that are accessed from USB pen-drives, these
>> entries too need to be copied first to the journal, to maintain
>> compatability.
>>
>>
>>
>> SOLUTION-IMPLEMENTATION-REQUIREMENT ::
>> =====================================
>>
>> The "etoys-sugar-code" is needed, wherein a flag may be passed to
>> objectchooser, to copy the file to the journal if invoked from etoys; and
>> subsequently access the journal-entry thereafter.
>>
>> Bert, we will be grateful if you could provide the code-location for this.
>>
>>
>>
>>
>>
>> b)
>> The second issue is the sound not playing.
>>
>> I ensured that the following packages were installed on my non-XO laptop
>> (Dell-F14-laptop) ::
>>
>> * gstreamer-plugins-bad
>> * gstreamer-plugins-ugly
>> * gstreamer-ffmpeg
>> * etoys
>> * squeak-vm
>> * squeak-vm-nonXOplugins
>>
>> Thereafter, I downloaded the following MPEG file ::
>>
>> http://samples.fileformat.info/format/mpeg/sample/567fd6a0e0da4a8e81bdeb870de3b19c/DELTA.MPG?AWSAccessKeyId=0V91BEFA7GM093MEVMG2&Signature=zvF6p5NE3Jz3oSKtyw2obyPosDQ%3D&Expires=1338322225
>>
>>
>> and tried playing via "Supplies" -> "Object Catalogue" -> "Multimedia" ->
>> "MPEGPlayer". However, I got the same "abandon" error, with the
>> second-last, and third-last stack-point error as follows ::
>>
>> #####################################################################
>> primitiveFailed
>>     "Announce that a primitive has failed and there is no appropriate
>>     Smalltalk code to run."
>>
>>     self error: 'a primitive has failed'
>>
>>
>> primFileValidMPEG: aPath
>>     "Check to see if the file is valid"
>>     <primitive: 'primitiveMPEG3CheckSig' module: 'Mpeg3Plugin'>
>>     self primitiveFailed
>> #####################################################################
>>
>>
>>
>> SOLUTION ::
>> =========
>>
>> I guess there is still some plugin missing on my Dell laptop.
>> But I have gone out of ideas to try.
>>
>> Bert, we will again be grateful :)
>>
>>
>>
>>
>> Thanks and Regards,
>> Ajay
>>
>>
>> On Sun, May 27, 2012 at 2:10 AM, Rafael Ortiz <rafael at activitycentral.com
>> > wrote:
>>
>>>
>>>
>>> On Sat, May 26, 2012 at 12:13 PM, Rafael Ortiz <
>>> rafael at activitycentral.com> wrote:
>>>
>>>>
>>>>
>>>> On Sat, May 26, 2012 at 7:47 AM, Peter Robinson <pbrobinson at gmail.com>wrote:
>>>>
>>>>> On Sat, May 26, 2012 at 12:54 PM, Bert Freudenberg <
>>>>> bert at freudenbergs.de> wrote:
>>>>> >
>>>>> > On 25.05.2012, at 22:21, Rafael Ortiz wrote:
>>>>> >
>>>>> >
>>>>> >
>>>>> > On Thu, May 24, 2012 at 11:34 AM, Rafael Ortiz <
>>>>> rafael at activitycentral.com>
>>>>> > wrote:
>>>>> >>
>>>>> >> Hi
>>>>> >>
>>>>> >> While trying to add a journal entry (mp3 file) from etoys-113, i'm
>>>>> getting
>>>>> >> ."An error has occurred; you should probably just hit abandon.
>>>>> Sorry"
>>>>> >>
>>>>> >> Is this known?
>>>>> >>
>>>>> >> Log attached
>>>>> >>
>>>>> >
>>>>> > A clue on what this might be happening and how to solve it,
>>>>> appreciated.
>>>>> >
>>>>> > Thanks :)
>>>>> >
>>>>> >
>>>>> > Well, the relevant lines in the error log seem to be these:
>>>>> >
>>>>> > DBusError: Traceback (most recent call last):
>>>>> >   File "/usr/lib/python2.7/site-packages/dbus/service.py", line 702,
>>>>> in
>>>>> > _message_cb
>>>>> >     retval = candidate_method(self, *args, **keywords)
>>>>> >   File "/usr/lib/python2.7/site-packages/carquinyol/datastore.py",
>>>>> line 355,
>>>>> > in get_properties
>>>>> >     metadata = self._metadata_store.retrieve(uid)
>>>>> >   File
>>>>> "/usr/lib/python2.7/site-packages/carquinyol/metadatastore.py", line
>>>>> > 41, in retrieve
>>>>> >     return metadatareader.retrieve(metadata_path, properties)
>>>>> > IOError: Couldn't open metadata directory
>>>>> > /home/olpc/.sugar/default/datastore//m//media/Philips/Buenos
>>>>> Muchachos/Se
>>>>> > Pule La Colmena/2-06 Corazonoro.mp3/metadata
>>>>> >
>>>>> > So apparently Etoys tries to access the metadata for the MP3 but the
>>>>> > datastore fails to find it. Etoys does not handle that case, it
>>>>> relies on
>>>>> > get_properties() succeeding. Is that wrong?
>>>>>
>>>>> Being a mp3 do we even have the correct bits installed to be able to
>>>>> retrieve that information?
>>>>
>>>>
>>>>
>>>> In this case what would be the proper bits ?
>>>>
>>>>
>>>>
>>>>
>>>>> Our default builds don't come with the
>>>>> ability to play mp3 files so I'm not sure if we can even read the
>>>>> metadata.
>>>>>
>>>>>
>>> Also realized that the same problem is happening on
>>> ogg files, so doesn't seem related to codecs.
>>>
>>>
>>>
>>>>  Peter
>>>>> _______________________________________________
>>>>> Sugar-devel mailing list
>>>>> Sugar-devel at lists.sugarlabs.org
>>>>> http://lists.sugarlabs.org/listinfo/sugar-devel
>>>>>
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Sugar-devel mailing list
>>> Sugar-devel at lists.sugarlabs.org
>>> http://lists.sugarlabs.org/listinfo/sugar-devel
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sugarlabs.org/archive/sugar-devel/attachments/20120530/8a983be8/attachment-0001.html>


More information about the Sugar-devel mailing list