Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-33015: Add a wrapper for thread function in PyThread_start_new_thread #6008

Merged
merged 4 commits into from
Nov 30, 2018
Merged

bpo-33015: Add a wrapper for thread function in PyThread_start_new_thread #6008

merged 4 commits into from
Nov 30, 2018

Conversation

siddhesh
Copy link
Contributor

@siddhesh siddhesh commented Mar 6, 2018

PyThread_start_new_thread accepts a function of type void (*) (void *), which does not match with the pthread_create function callback prototype void *(*) (void *). This results in an invalid function cast warning with gcc8. Fix this by wrapping the function in an internal pthread function callback that returns NULL.

https://bugs.python.org/issue33015

typedef struct {
void (*func) (void *);
void *arg;
bool copied;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The flag must be volatile. Also, I'm not sure about the whole approach of busy-waiting in the parent thread until the child actually starts execution. Maybe malloc'ing the structure is preferable. Need the opinion of a core dev here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your review.

Why does the flag need to be volatile? The release fence should be sufficient to ensure that the compiler doesn't do anything funny even if it does IPA. As for busy waiting vs having a mutex lock, I chose the former as a tradeoff since the synchronization requirement is fairly minor and didn't seem to justify the additional context switch. I don't have a strong opinion either way so if a mutex is desirable I'll change my patch accordingly.

malloc won't really solve anything since it will also require synchronization to free the block, unless you're proposing leaking that block, i.e. not freeing it at all.

I just noticed that the CI failed on the patch, I'll fix it up and re-post.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does the flag need to be volatile?

You check the flag in the parent thread. Unless the compiler understands that the structure escapes into another thread, it may optimize the check way. I've not verified it, but the reason of the hang in the CI might be just that.

malloc won't really solve anything since it will also require synchronization to free the block

I meant malloc + ownership transfer to the child, so that the child must free the block when it's done. It's the same as in PyThread_start_new_thread in Python/thread_nt.h.

Copy link
Contributor Author

@siddhesh siddhesh Mar 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah you're right, the malloc way can actually be easier, I just didn't see it at first. Updated patch coming up.

Likewise for the volatile usage (to address all of the review comments); I was conflating two different issues and came to the wrong conclusion.

Copy link
Contributor

@izbyshev izbyshev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good bar cosmetic issues and a leak.

@@ -0,0 +1,3 @@
Add a wrapper for thread function in PyThread_start_new_thread

PyThread_start_new_thread accepts a function of type `void (*) (void *)`, which does not match with the pthread_create function callback prototype `void () (void *)`. This results in an invalid function cast warning with gcc8. Fix this by wrapping the function in an internal pthread function callback that returns NULL.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that NEWS entries are usually short and don't explain the details (those are in the commit message), so I'd rephrase it (see other NEWS entries for examples).


func(arg);

free (fn);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use PyMem_RawMalloc/PyMem_RawFree like in other parts of the module (I've used malloc as a generic term before, sorry).

It's better to free it before calling func.

Please follow PEP 7 here and in other places (here, there should be no spaces between the function name and the parenthesis).

Python/thread_pthread.h Outdated Show resolved Hide resolved
@siddhesh
Copy link
Contributor Author

Hi, any update on this PR?

Copy link
Contributor

@izbyshev izbyshev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't aware of your changes because I didn't receive any notifications from github for some reason. LGTM now, thank you! Still needs an approval from a core dev.

@siddhesh
Copy link
Contributor Author

Hello, any update on this?

@siddhesh
Copy link
Contributor Author

siddhesh commented Jul 3, 2018

Hello, Ping!

@izbyshev
Copy link
Contributor

@zooba Would you look at this PR?

Copy link
Member

@zooba zooba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fine to me.

@izbyshev
Copy link
Contributor

@zooba Thank you!
@siddhesh Nit: would be nice to reformat the NEWS entry to fit in 80 columns (blurb does that automatically).

@siddhesh
Copy link
Contributor Author

Done, I also fixed up the dates for the change.

@vstinner
Copy link
Member

See also PR #6748 and https://bugs.python.org/issue33012

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The change looks valid, but I need to be convinced that a compiler warning justify a memory allocation just to call a function.

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

Copy link
Member

@pitrou pitrou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good on the principle, just two minor comments.

Python/thread_pthread.h Outdated Show resolved Hide resolved
Python/thread_pthread.h Outdated Show resolved Hide resolved
Python/thread_pthread.h Show resolved Hide resolved
@gpshead
Copy link
Member

gpshead commented Oct 24, 2018

Based on conversations with C / C++ experts at work, this approach seems correct (one even came up with an effectively identical proposal).

Yes, it is unfortunate that we're in this situation due to the mismatched PyThread_start_new_thread API vs pthread_create when the ABIs and compilers on the common platforms today have so far resulted in the existing implicit cast's undefined behavior just happening to work fine, but this implementation is actually correct.

I agree with @pitrou 's code review comments.

@pitrou
Copy link
Member

pitrou commented Oct 25, 2018

This looks good to me. I will let other people comment just in case, otherwise merge soon.


void (*func)(void *) = pfn->func;
void *arg = pfn->arg;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: please move this empty line after the free, not before :-) to make it clear that the memory is freed when the function is called.

} pythread_fn;

static void *
pythread_helper_fn(void *fn)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: i suggest to rename it to "pythread_wrapper". To me, it's more a wrapper than an helper ;-)

Python/thread_pthread.h Show resolved Hide resolved
typedef struct {
void (*func) (void *);
void *arg;
} pythread_fn;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest to rename it to pythread_callback since it's not only a function but function+arguments (or maybe pythread_func).

@@ -188,21 +213,32 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
#endif

pythread_fn *fn = (pythread_fn *)PyMem_RawMalloc(sizeof (pythread_fn));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the cast is useless, no?

if (status != 0)

if (status != 0) {
PyMem_RawFree((void *)fn);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the cast is useless, no?

siddhesh and others added 3 commits November 30, 2018 14:28
PyThread_start_new_thread accepts a function of type void (*) (void
*), which does not match with the pthread_create function callback
prototype void *(*) (void *).  This is undefined behaviour and hence
results in an invalid function cast warning with gcc8.  Fix this by
wrapping the function in an internal pthread function callback that
returns NULL.
* Rename pythread_fn to pythread_callback
* Rename pythread_helper_fn() to pythread_wrapper()
* Rewrite the comment
* Rename "fn" to "callback"
* Add { ... } to if
* Remove useless cast
@vstinner
Copy link
Member

Since @siddhesh didn't reply since one month, I took the liberty of rebasing his change and apply my proposed cleanup changes.

Copy link
Member

@vstinner vstinner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@siddhesh
Copy link
Contributor Author

Sorry about that, I've been tied up and hence couldn't get to this. Thanks for cleaning it up for me.

@vstinner vstinner merged commit 9eea6ea into python:master Nov 30, 2018
@miss-islington
Copy link
Contributor

Thanks @siddhesh for the PR, and @vstinner for merging it 🌮🎉.. I'm working now to backport this PR to: 2.7, 3.6, 3.7.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Nov 30, 2018
Fix an undefined behaviour in the pthread implementation of
PyThread_start_new_thread(): add a function wrapper to always return
NULL.

Add pythread_callback struct and pythread_wrapper() to thread_pthread.h.
(cherry picked from commit 9eea6ea)

Co-authored-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
@bedevere-bot
Copy link

GH-10821 is a backport of this pull request to the 3.7 branch.

@miss-islington
Copy link
Contributor

Sorry, @siddhesh and @vstinner, I could not cleanly backport this to 3.6 due to a conflict.
Please backport using cherry_picker on command line.
cherry_picker 9eea6eaf23067880f4af3a130e3f67c9812e2f30 3.6

@miss-islington
Copy link
Contributor

Sorry, @siddhesh and @vstinner, I could not cleanly backport this to 2.7 due to a conflict.
Please backport using cherry_picker on command line.
cherry_picker 9eea6eaf23067880f4af3a130e3f67c9812e2f30 2.7

@bedevere-bot
Copy link

GH-10822 is a backport of this pull request to the 3.6 branch.

@bedevere-bot
Copy link

GH-10823 is a backport of this pull request to the 2.7 branch.

miss-islington added a commit that referenced this pull request Nov 30, 2018
Fix an undefined behaviour in the pthread implementation of
PyThread_start_new_thread(): add a function wrapper to always return
NULL.

Add pythread_callback struct and pythread_wrapper() to thread_pthread.h.
(cherry picked from commit 9eea6ea)

Co-authored-by: Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com>
vstinner added a commit that referenced this pull request Nov 30, 2018
…10822)

Fix an undefined behaviour in the pthread implementation of
PyThread_start_new_thread(): add a function wrapper to always return
NULL.

Add pythread_callback struct and pythread_wrapper() to thread_pthread.h.

(cherry picked from commit 9eea6ea)
vstinner added a commit that referenced this pull request Nov 30, 2018
…10823)

Fix an undefined behaviour in the pthread implementation of
PyThread_start_new_thread(): add a function wrapper to always return
NULL.

Add pythread_callback struct and pythread_wrapper() to thread_pthread.h.

(cherry picked from commit 9eea6ea)
@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot AMD64 Debian PGO 3.7 has failed when building commit b135535.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/all/#builders/128/builds/828) and take a look at the build logs.
  4. Check if the failure is related to this commit (b135535) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/all/#builders/128/builds/828

Click to see traceback logs
From https://github.com/python/cpython
 * branch                  3.7        -> FETCH_HEAD
Reset branch '3.7'

find: ‘build’: No such file or directory
find: ‘build’: No such file or directory
find: ‘build’: No such file or directory
find: ‘build’: No such file or directory
make[2]: [clean] Error 1 (ignored)
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
Task was destroyed but it is pending!
task: <Task pending coro=<<async_generator_athrow without __name__>()>>
Task was destroyed but it is pending!
task: <Task pending coro=<<async_generator_athrow without __name__>()>>
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
stty: 'standard input': Inappropriate ioctl for device
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
unhandled exception during asyncio.run() shutdown
task: <Task finished coro=<<async_generator_athrow without __name__>()> exception=RuntimeError("can't send non-None value to a just-started coroutine")>
RuntimeError: can't send non-None value to a just-started coroutine
unhandled exception during asyncio.run() shutdown
task: <Task finished coro=<<async_generator_athrow without __name__>()> exception=RuntimeError("can't send non-None value to a just-started coroutine")>
RuntimeError: can't send non-None value to a just-started coroutine
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
profiling:/var/lib/buildbot/slaves/enable-optimizations-bot/3.7.gps-debian-profile-opt.nondebug/build/Python/getargs.gcda:Merge mismatch for function 12
Python/getargs.c: In function ‘vgetargskeywords’:
Python/getargs.c:2551:1: internal compiler error: in create_edge, at cgraph.c:850
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-6/README.Bugs> for instructions.
make[1]: *** [Python/getargs.o] Error 1
make: *** [profile-opt] Error 2

@bedevere-bot
Copy link

⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️

Hi! The buildbot PPC64 Fedora 2.7 has failed when building commit 8f83c2f.

What do you need to do:

  1. Don't panic.
  2. Check the buildbot page in the devguide if you don't know what the buildbots are or how they work.
  3. Go to the page of the buildbot that failed (https://buildbot.python.org/all/#builders/81/builds/295) and take a look at the build logs.
  4. Check if the failure is related to this commit (8f83c2f) or if it is a false positive.
  5. If the failure is related to this commit, please, reflect that on the issue and make a new Pull Request with a fix.

You can take a look at the buildbot page here:

https://buildbot.python.org/all/#builders/81/builds/295

Click to see traceback logs
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib64/python2.7/test/test_support.py", line 22, in <module>
    import _testcapi
ImportError: No module named _testcapi

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants