[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cannot log in with gdm after lenny upgrade



On Wed, 02 Jan 2008 07:57:22 -0800, Daniel Burrows wrote:

> On Wed, Jan 02, 2008 at 12:58:22AM +0000, Hendrik Boom <hendrik@topoi.pooq.com> was heard to say:
>> On Mon, 31 Dec 2007 09:49:43 -0800, Daniel Burrows wrote:
>> 
>> > On Mon, Dec 31, 2007 at 03:58:03AM +0000, Hendrik Boom <hendrik@topoi.pooq.com> was heard to say:
>> >> /etc/gdm/Xsession: Beginning session startup ...
>> >> Setting 1M through im-switch for locale=en_CA
>> >> Start IM through /farhome/hendrik/.xinput.d/en_CA linked to /etc/X11/xinit/xinput.d/uim_toolbar.
>> >> failed in listen():  Invalid argument
>> >> mkdtemp: private socket dir: Permission denied
>> > 
>> >   That almost sounds like you don't have write permission to $TMPDIR.
>> > Do you have any configuration that changes the value of $TMPDIR?  (if
>> > you don't know about it you probably don't)  What do the following
>> > commands output?
>> > 
>> > ls -dl /tmp
>> > echo $TMPDIR
> 
>   [snip -- glad to hear it worked for you]
> 
>> Thanks.  How did you ever manage to think of this?
> 
>   The main thing for me was to ignore all those messages about suid GTK+
> programs; since the log continues past those messages, it's a good
> (although not certain) bet that they're unrelated to the problem.  Once
> I read past them I saw the failures above (listen and mkdtemp), 
> which sound like a program trying to create a listen socket in /tmp and
> failing.
> 
>   In particular, there's no other obvious reason for mkdtemp to fail
> with "permission denied"; even "nobody" can write to /tmp on a default
> Debian system.  As Andrew said, that message is a pretty big clue, once
> you've waded through all the other chatter in the log.
> 
>   Daniel

I'm trying to understand how these library calls are related to /tmp,
since this is the kind of stuff I think I should know about.

I looked for the specification of listen(), and found a man page with the
synopsis
   int listen(int socket, int backlog);
No reference to /tmp here.  And for mkdtemp I find
   char *mkdtemp(char *template);
Could it be the template starts with "/tmp/XXXXXX" or something like that?
 Or are temporary directory is alwayse put inside /tmp ?
How is a temporary directory related to a socket?

Or, where should I look to find the answers to this kind of question?

-- hendrik


Reply to: