Skip to content

[SR-7241] libdispatch: queues getting background prio #660

@swift-ci

Description

@swift-ci
Previous ID SR-7241
Radar None
Original Reporter Kurkin (JIRA User)
Type Bug
Environment

linux without pthread_workqueue_init, so HAVE_PTHREAD_WORKQUEUE_QOS is 0

Additional Detail from JIRA
Votes 0
Component/s libdispatch
Labels Bug
Assignee None
Priority Medium

md5: 713ccb4651173e9742d05928621b4bd0

Issue Description:

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

goes to

 dispatch_queue_t dispatch_get_global_queue(long priority, unsigned long flags) { if (flags & ~(unsigned long)DISPATCH_QUEUE_OVERCOMMIT) { return DISPATCH_BAD_INPUT; } dispatch_qos_t qos = _dispatch_qos_from_queue_priority(priority); <--- #if !HAVE_PTHREAD_WORKQUEUE_QOS if (qos == QOS_CLASS_MAINTENANCE) { qos = DISPATCH_QOS_BACKGROUND; } else if (qos == QOS_CLASS_USER_INTERACTIVE) { qos = DISPATCH_QOS_USER_INITIATED; } #endif if (qos == DISPATCH_QOS_UNSPECIFIED) { return DISPATCH_BAD_INPUT; } return _dispatch_get_root_queue(qos, flags & DISPATCH_QUEUE_OVERCOMMIT); } 

goes to
_dispatch_qos_from_queue_priority where DISPATCH_QUEUE_PRIORITY_HIGH mapped to DISPATCH_QOS_USER_INITIATED(5) and DISPATCH_QOS_USER_INITIATED(5) is equal to QOS_CLASS_MAINTENANCE(5) and we are getting queue with wrong prio

Expected Results:
High prio queue

Actual Results:
Background prio queue

Version/Build:
master libdispatch

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions