[Sugar-devel] "Another osbuild instance is running" error

Shraddha Barke shraddha.6596 at gmail.com
Fri Jan 1 23:51:12 EST 2016



On Sat, 2 Jan 2016, James Cameron wrote:

> On Fri, Jan 01, 2016 at 08:38:34PM +0530, Shraddha Barke wrote:
>>
>>
>> On Fri, 1 Jan 2016, James Cameron wrote:
>>
>>> On Thu, Dec 31, 2015 at 11:26:26PM +0530, Shraddha Barke wrote:
>>>>
>>>>
>>>> On Thu, 31 Dec 2015, James Cameron wrote:
>>>>
>>>>> On Thu, Dec 31, 2015 at 03:38:02AM +0530, Shraddha Barke wrote:
>>>>>>> On Wed, Dec 30, 2015 at 04:30:17AM +0530, Shraddha Barke wrote:
>>>>>>>> I am trying to build sugar on Ubuntu 15.04 laptop. After git clone
>>>>>>>> and cd into sugar-build I get this error-Another osbuild instance is
>>>>>>>> running on executing ./osbuild pull
>>>>>>>> I searched the internet and found 2 such threads but the issue wasn't
>>>>>>>> resolved.
>>>>>>>
>>>>>>> There's more than two such threads on sugar-devel at .
>>>>>>>
>>>>>>>> Is this a bug that needs fixing?
>>>>>>>
>>>>>>> Yes, it's a bug in osbuild, please fix it.
>>>>>>
>>>> Hello James,
>>>> I made the following changes in check_lock()
>>>>
>>>> def check_lock():
>>>> -    try:
>>>> -        fcntl.lockf(get_lock_file(), fcntl.LOCK_EX | fcntl.LOCK_NB)
>>>> -    except IOError:
>>>> -        return False
>>>> -
>>>> -    return True
>>>> -
>>>>
>>>> +       pid = os.getpid()
>>>> +       try:
>>>> +            fcntl.lockf(pid, fcntl.LOCK_EX | fcntl.LOCK_NB)
>>>> +       except IOError:
>>>> +           return False
>>>> +       try:
>>>> +           os.kill(pid(), 0)
>>>> +       except OSError:
>>>> +            return False
>>>> +        return True
>>>
>>> Ah, that's not what I meant.
>>>
>>> But I was wrong to suggest a redesign using getpid and kill, because
>>> my analysis of the code _today_ shows the underlying cause must be
>>> something other than locking.
>>>
>>> Let me explain.
>>>
>>> check_lock does try fcntl.lock, and if an exception IOError occurs,
>>> does return False.
>>>
>>> But inside the same try clause is a call to get_lock_file.  Therefore
>>> any IOError inside get_lock_file will also cause check_lock to return
>>> False.
>>>
>>> A possible error is that the file could not be opened for write,
>>> e.g. because it is owned by someone else, or the protection mask
>>> (chmod) is wrong, or the directory does not exist, or the directory is
>>> protected.
>>>
>>> def check_lock():
>>>   lock_file = get_lock_file()
>>>   try:
>>>       fcntl.lockf(lock_file, fcntl.LOCK_EX | fcntl.LOCK_NB)
>>>   except IOError:
>>>       return False
>>>
>>>   return True
>>>
>>> As a result of this change, any problem opening and writing to the
>>> file will be reported before the "another instance" error.
>>>
>>
>> Ah Got it! Thanks :)
>>
>> Like you said it's a permission error. I've posted it below -
>>
>> Traceback (most recent call last):
>>   File "./osbuild", line 504, in <module>
>>     if not main():
>>   File "./osbuild", line 467, in main
>>     if not check_lock():
>>   File "./osbuild", line 406, in check_lock
>>     lock_file = get_lock_file()
>>   File "./osbuild", line 90, in get_lock_file
>>     lock_file = open(get_lock_file_path(), "w")
>> IOError: [Errno 13] Permission denied:
>> '/home/shraddha/git/sugar-build/.lock-host'
>
> Okay, that will certainly stop osbuild from working.
>
>>
>>>>
>>>> so that when there is no process running false is returned. However it is
>>>> not fixing the bug.
>>>> And yeah when I try to delete the lock file, I get 'file or
>>>> directory doesn't exist'
>>>
>>> That's not possible to explain given the data you sent.
>>>
>>> You said the print statement showed the file path as
>>>
>>> .../git/sugar-build/.lock-host
>>>
>>> Presumably ... is something like /home/username
>>>
>>> Does the .lock-host file still exist?
>>>
>>> Show me "stat .lock-host"?
>>>
>>> If the file exists, but you cannot delete it, then osbuild will fail
>>> to open it for write.
>>>
>>
>> stat: cannot stat ‘.lock-host’: No such file or directory
>>
>> This is what I get. It's confusing that although it's failing to write,
>> stat says no such directory exists!
>
> Ye, that is strange.  On the one hand the file exists and cannot be
> opened for write, yet now the file does not exist.
>
> Please check you are in the right directory when you use stat, or use
> stat with the same full path to the file (as reported by osbuild);
>
> 	stat /home/shraddha/git/sugar-build/.lock-host
>
> I'm trying not to presume any knowledge; if you only type "stat
> .lock-host", then the stat program will look for the file .lock-host
> in the current directory.  You can see what the current directory is
> by typing "pwd".  You can change the current directory using the "cd"
> command.


stat: cannot stat ‘/home/shraddha/git/sugar-build/.lock-host’: No such 
file or directory

I'm searching why this is happening. Meanwhile if anything strikes you
do let me know

Kind Regards,
Shraddha


More information about the Sugar-devel mailing list