Problematic type casting between int/long?

Bug #1435242 reported by James Page
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Python
Fix Released
Unknown
cinder (Ubuntu)
Fix Released
High
James Page
python2.7 (Ubuntu)
Fix Released
Undecided
Unassigned

Bug Description

We're seeing this error with the new kilo-3 milestone:

======================================================================
FAIL: cinder.tests.test_utils.GetBlkdevMajorMinorTestCase.test_get_blkdev_major_minor_file
cinder.tests.test_utils.GetBlkdevMajorMinorTestCase.test_get_blkdev_major_minor_file
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "/build/buildd/cinder-2015.1~b3/cinder/tests/test_utils.py", line 721, in test_get_blkdev_major_minor_file
    dev = self._test_get_blkdev_major_minor_file('/dev/made_up_disk1')
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/build/buildd/cinder-2015.1~b3/cinder/tests/test_utils.py", line 712, in _test_get_blkdev_major_minor_file
    dev = utils.get_blkdev_major_minor(test_file)
  File "/build/buildd/cinder-2015.1~b3/cinder/utils.py", line 656, in get_blkdev_major_minor
    return get_blkdev_major_minor(devpath, False)
  File "/build/buildd/cinder-2015.1~b3/cinder/utils.py", line 645, in get_blkdev_major_minor
    return '%d:%d' % (os.major(st.st_rdev), os.minor(st.st_rdev))
SystemError: ../Objects/longobject.c:998: bad argument to internal function
Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

Traceback (most recent call last):
  File "/build/buildd/cinder-2015.1~b3/cinder/tests/test_utils.py", line 721, in test_get_blkdev_major_minor_file
    dev = self._test_get_blkdev_major_minor_file('/dev/made_up_disk1')
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/build/buildd/cinder-2015.1~b3/cinder/tests/test_utils.py", line 712, in _test_get_blkdev_major_minor_file
    dev = utils.get_blkdev_major_minor(test_file)
  File "/build/buildd/cinder-2015.1~b3/cinder/utils.py", line 656, in get_blkdev_major_minor
    return get_blkdev_major_minor(devpath, False)
  File "/build/buildd/cinder-2015.1~b3/cinder/utils.py", line 645, in get_blkdev_major_minor
    return '%d:%d' % (os.major(st.st_rdev), os.minor(st.st_rdev))
SystemError: ../Objects/longobject.c:998: bad argument to internal function

Traceback (most recent call last):
_StringException: Empty attachments:
  stderr
  stdout

Traceback (most recent call last):
  File "/build/buildd/cinder-2015.1~b3/cinder/tests/test_utils.py", line 721, in test_get_blkdev_major_minor_file
    dev = self._test_get_blkdev_major_minor_file('/dev/made_up_disk1')
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/build/buildd/cinder-2015.1~b3/cinder/tests/test_utils.py", line 712, in _test_get_blkdev_major_minor_file
    dev = utils.get_blkdev_major_minor(test_file)
  File "/build/buildd/cinder-2015.1~b3/cinder/utils.py", line 656, in get_blkdev_major_minor
    return get_blkdev_major_minor(devpath, False)
  File "/build/buildd/cinder-2015.1~b3/cinder/utils.py", line 645, in get_blkdev_major_minor
    return '%d:%d' % (os.major(st.st_rdev), os.minor(st.st_rdev))
SystemError: ../Objects/longobject.c:998: bad argument to internal function

This is evidently not impacting cinder on 14.04, just 15.04 so I would suspect some sort of python 2.7.9 issue.

Casting to long appears to workaround this problem.

James Page (james-page)
Changed in cinder (Ubuntu):
status: New → Fix Committed
importance: Undecided → High
assignee: nobody → James Page (james-page)
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cinder - 1:2015.1~b3-0ubuntu1

---------------
cinder (1:2015.1~b3-0ubuntu1) vivid; urgency=medium

  [ James Page ]
  * d/pydist-overrides: Add overrides for oslo packages.

  [ Corey Bryant ]
  * New upstream milestone release for OpenStack Kilo:
    - d/control: Align with upstream dependencies.
    - d/p/skip-huaweistorac-delete-snapshot-success-test.patch: Dropped.
      Patched test has been removed.

  [ James Page ]
  * d/control: Add missing BD on python-testresources.
  * d/p/fix-long-casting.patch: Workaround some problematic type casting between
    int/long (LP: #1435242).
  * d/p/fix-assert-raises-regex-tests.patch: Patchup incorrect usage of
    assertUsesRegex{p} in unit tests.
 -- James Page <email address hidden> Mon, 30 Mar 2015 11:07:20 +0100

Changed in cinder (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Matthias Klose (doko) wrote :

>>> import os
>>> os.minor(os.makedev(8,65))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
SystemError: ../Objects/longobject.c:998: bad argument to internal function
>>> os.major(os.makedev(8,65))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
SystemError: ../Objects/longobject.c:998: bad argument to internal function

casting to a long works ...

>>> os.major(long(os.makedev(8,65)))
8

Changed in python:
status: Unknown → New
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package python2.7 - 2.7.9-2ubuntu3

---------------
python2.7 (2.7.9-2ubuntu3) vivid; urgency=medium

  * Update to 20150401, taken from the 2.7 release branch.
    - Issue #23629: Fix the default __sizeof__ implementation for
      variable-sized objects.
    - Issue #21526: Tkinter now supports new boolean type in Tcl 8.5.
    - Issue #23838: linecache now clears the cache and returns an empty
      result on MemoryError.
    - Issue #23742: ntpath.expandvars() no longer loses unbalanced single
      quotes.
    - Issue #21802: The reader in BufferedRWPair now is closed even when
      closing writer failed in BufferedRWPair.close().
    - Issue #23671: string.Template now allows to specify the "self" parameter
      as keyword argument. string.Formatter now allows to specify the "self"
      and the "format_string" parameters as keyword arguments.
    - Issue #21560: An attempt to write a data of wrong type no longer cause
      GzipFile corruption.
    - Issue #23647: Increase imaplib's MAXLINE to accommodate modern mailbox
      sizes.
    - Issue #23539: If body is None, http.client.HTTPConnection.request now
      sets Content-Length to 0 for PUT, POST, and PATCH headers to avoid
      411 errors from some web servers.
    - Issue #23136: _strptime now uniformly handles all days in week 0,
      including Dec 30 of previous year.
    - Issue #23138: Fixed parsing cookies with absent keys or values in
      cookiejar.
    - Issue #23051: multiprocessing.Pool methods imap() and imap_unordered()
      now handle exceptions raised by an iterator.
    - Issue #22928: Disabled HTTP header injections in httplib.
    - Issue #23615: Module tarfile now can be reloaded with imp.reload().
    - Issue #23799: Added test.test_support.start_threads() for running and
      cleaning up multiple threads.
    - Issue #22390: test.regrtest now emits a warning if temporary files or
      directories are left after running a test.
    - Issue #23583: Added tests for standard IO streams in IDLE.
    - Issue #23583: Fixed writing unicode to standard output stream in IDLE.
  * Re-apply the fix for issue #22079. This is now a warning instead of an
    error. LP: #1426294.
  * Fix issue #23842, SystemError in os.minor, os.major. LP: #1435242.
 -- Matthias Klose <email address hidden> Thu, 02 Apr 2015 16:13:26 +0200

Changed in python2.7 (Ubuntu):
status: New → Fix Released
Changed in python:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.