This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author eryksun
Recipients cgohlke, eryksun, ezio.melotti, paul.moore, serhiy.storchaka, steve.dower, tim.golden, vstinner, zach.ware
Date 2016-09-13.09:57:57
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1473760678.25.0.74035737353.issue28114@psf.upfronthosting.co.za>
In-reply-to
Content
parse_envlist is calling PyUnicode_FromFormat with the format "%U=%U", but passing it bytes:

    |Debug Error!

    Program: C:\Program Files\Python36\python_d.exe

    abort() has been called

    (Press Retry to debug the application)
    (1e8.374): Break instruction exception - code 80000003 (first chance)
    ucrtbased!issue_debug_notification+0x45:
    00007ffc`aa1f1985 cc              int     3
    1:002> k 0n12
    Child-SP          RetAddr           Call Site
    00000030`a5fe9bb0 00007ffc`aa1f1b23 ucrtbased!issue_debug_notification+0x45
    00000030`a5fe9c00 00007ffc`aa212d7d ucrtbased!__acrt_report_runtime_error+0x13
    00000030`a5fe9c60 00007ffc`aa2184cf ucrtbased!abort+0x1d
    00000030`a5fe9ca0 00007ffc`aa2164c8 ucrtbased!common_assert_to_stderr<wchar_t>+0xbf
    00000030`a5fe9d00 00007ffc`aa218e7f ucrtbased!common_assert<wchar_t>+0x68
    00000030`a5fe9d40 00000000`60e59045 ucrtbased!_wassert+0x2f
    00000030`a5fe9d70 00000000`60eb9f71 python36_d!_PyUnicode_CheckConsistency+0x45
    00000030`a5fe9e00 00000000`60e4cd07 python36_d!unicode_fromformat_arg+0xc81
    00000030`a5fe9fa0 00000000`60e4cc31 python36_d!PyUnicode_FromFormatV+0xa7
    00000030`a5fea040 00000000`60c69853 python36_d!PyUnicode_FromFormat+0x31
    00000030`a5fea080 00000000`60c68286 python36_d!parse_envlist+0x1c3
    00000030`a5fea180 00000000`60c5d4ee python36_d!os_spawnve_impl+0x1d6

    1:002> .frame 6
    06 00000030`a5fe9d70 00000000`60eb9f71 python36_d!_PyUnicode_CheckConsistency+0x45
    1:002> ?? op->ob_type->tp_name
    char * 0x00000000`60fe1248
     "bytes"

parse_envlist used to call PyUnicode_FSConverter on key and val; get the underlying buffers via PyBytes_AsString; allocate a new buffer and copy key and val into "%s=%s". Now it instead calls PyUnicode_FromFormat for "%U=%U" and then fsconvert_strdup, which has been modified to call PyUnicode_AsWideCharString on Windows and otherwise PyUnicode_FSConverter. 

For Windows it could use PyUnicode_FSDecoder on key and val in combination with PyUnicode_FromFormat and the format string "%U=%U". For Unix it could use PyUnicode_FSConverter for key and val in combination with PyBytes_FromFormat and the format string "%s=%s".
History
Date User Action Args
2016-09-13 09:57:58eryksunsetrecipients: + eryksun, paul.moore, vstinner, tim.golden, ezio.melotti, cgohlke, zach.ware, serhiy.storchaka, steve.dower
2016-09-13 09:57:58eryksunsetmessageid: <1473760678.25.0.74035737353.issue28114@psf.upfronthosting.co.za>
2016-09-13 09:57:58eryksunlinkissue28114 messages
2016-09-13 09:57:57eryksuncreate