Open Bug 1180432 Opened 9 years ago Updated 2 years ago

mach: UnicodeEncodeError: 'ascii' codec can't encode characters in position 26-28: ordinal not in range(128)

Categories

(Firefox Build System :: General, defect)

Unspecified
Linux
defect

Tracking

(firefox42 affected)

Tracking Status
firefox42 --- affected

People

(Reporter: db48x, Unassigned)

Details

Perhaps stdout is ascii or something? Bug 795394 would have fixed that, at least for the parent. If I poke into the child_exception I see that it's complaining about my fancy prompt (powerline); indeed, if I turn that off mach works fine.

Here's the output, with my prompt included:

  anglachel  db48x  ~  src  firefox  ./mach build
 0:00.13 /usr/bin/make -f client.mk -s
Error running mach:

    ['build']

The error occurred in code that was called by the mach command. This is either
a bug in the called code itself or in the way that mach is calling it.

You should consider filing a bug for this issue.

If filing a bug, please include the full output of mach, including this error
message.

The details of the failure are as follows:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 26-28: ordinal not in range(128)

  File "/home/db48x/src/firefox/python/mozbuild/mozbuild/mach_commands.py", line 389, in build
    silent=not verbose)
  File "/home/db48x/src/firefox/python/mozbuild/mozbuild/base.py", line 572, in _run_make
    return fn(**params)
  File "/home/db48x/src/firefox/python/mozbuild/mozbuild/base.py", line 615, in _run_command_in_srcdir
    return self.run_process(cwd=self.topsrcdir, **args)
  File "/home/db48x/src/firefox/python/mach/mach/mixin/process.py", line 136, in run_process
    p.run()
  File "/home/db48x/src/firefox/testing/mozbase/mozprocess/mozprocess/processhandler.py", line 727, in run
    self.proc = self.Process([self.cmd] + self.args, **args)
  File "/home/db48x/src/firefox/testing/mozbase/mozprocess/mozprocess/processhandler.py", line 114, in __init__
    universal_newlines, startupinfo, creationflags)
  File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
Does your source or object directory have non-ascii characters in it? If so, that's likely the bug. Unicode in prompts and other environments should work.
Flags: needinfo?(db48x)
No, there are no non-ascii characters in the path:

  anglachel  db48x  ~  src  firefox  hexdump -C <(pwd)
00000000  2f 68 6f 6d 65 2f 64 62  34 38 78 2f 73 72 63 2f  |/home/db48x/src/|
00000010  66 69 72 65 66 6f 78 0a                           |firefox.|
00000018

(you can see that no high bits are set).

Also, changing my prompt caused the error to go away. My apologies for not including that detail originally; however you'll note that when I used the debugger to inspect the exception object I see that it's pointing to the first non-ascii character in my prompt, which it's reading from a stream.
Flags: needinfo?(db48x)
Product: Core → Firefox Build System
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.