-
Notifications
You must be signed in to change notification settings - Fork 229
First batch of merges from the backlog. #114
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
Conversation
…vely add to parent subgraphs
…rind confirms reads/writes outside allocated memory.
…- explain a scenario where they do not work correctly.
/bin/bash is a Linuxism. /bin/sh is portable, and this script isn't using any bash-specific features.
Creating first batch merge to bring in well formed bugfixing pull requests.
Creating first batch of merges for well formed bug fixes.
Creating first batch merge for well formed bug fixes.
Updating development branch that I'm merging to.
Getting together PR's for first batch of merges.
…rated testing files.
|
@anadon I just want to say thank you so much for getting things moving! I have recently been trying to help some contributors get their PR into good shape to smooth the acceptance process, but I didn't expect that someone with merge permission would swoop in so soon to actually clear up the backlog. Cheers. |
|
I don't have write permissions. I'm just making things easier. |
|
Oh, OK. Why are you merging multiple PRs into batches? If they get merged as a batch and we realize afterwards that something broke, won't it be harder to identify and revert the specific original PR that caused the break? |
|
I was directed to start catching up on the backlog and this was more expedient. On balance, it is better to get the obvious and easy stuff in quick since there are PR's waiting since 2014 and then suss through the ones that aren't trivial. If I end up the active maintainer for graph, or someone else dedicates time, then pull requests could be handled as they come which is more proper. |
Actually I meant you to batch the trivial one AFTER CI was set up, otherwise it's just a bunch of changes mashed together ;) Probably I didn't make that clear - sorry about that! Anyhow I've enabled travis and appveyor, time permitting I'll sort out some CI scripts later... |
|
OK CI is now enabled, can you "touch" one of the files in this PR? Hopefully that will trigger a fresh CI build. There is currently one CI failure in develop: https://travis-ci.org/boostorg/graph/jobs/423317402 relaxed_heap_test fails for gcc-8.1 in C++03 mode, I can reproduce here and gdb reports: I've no idea if this is a graph or Boost.Optional issue. |
|
Let me sort through this later today. I'm just waking up after a late night. |
|
Looks like relaxed head is being used as a priority heap, mainly coded in 2004. I think replacing it with boost.heap would be a good idea. Thoughts @jzmaddock ? It also looks like there are a number of 'pending' files which need attention from way back when. |
|
Actually, I'm looking at the stdlib implementation of priority queues and heaps and they are old enough that they look like they might be drop in replacements. I'll look into how viable those are. There is a lot of complexity in graph that I'm hoping is not necessary. |
|
It actually looks like the relaxed_heap is not used elsewhere, users don't have a method to enable it, a google search yields no used examples for a total of 6 results, and related structures in code are just not used. With it being vestigial, I'd like to remove it. I'd like a go-ahead before I muck around with that. |
A quick bit of grepping around: There are a few headers which include it, but don't use it, those #includes should be removed. It is still used in dijkstra_shortest_Paths.hpp if BOOST_GRAPH_DIJKSTRA_USE_RELAXED_HEAP is defined, but this is not the default, and it appears not to be documented anywhere. So... my suggestion would be to remove all references to it, but leave the header in place, and add some #pragmas to it to loudly report it as deprecated and unsupported. |
…marked as depreciated. This is due to some testing failures and a lack of use of relaxed_heap.
|
There are things in iteration_macros.hpp that I never could have imagined are valid syntax. They certainly are not in best practice. Attending to those now. I don't know why my system is not picking these up. |
|
#80 looks suspect to me. It claims to be a |
|
@swatanabe Could you be more specific in the issue you are seeing? |
|
AMDG
On 09/01/2018 05:45 PM, jrmarsha wrote:
@swatanabe Could you be more specific in the issue you are seeing?
The PR claims that it fixes a bug wherein add_vertex
fails to add the vertex to the ancestors of a subgraph,
breaking the subgraph invariants. That's all well
and good, so far, and the new behavior is clearly
correct according to the documentation. The problem is
that it /also/ permits inserting a vertex into the
root and inserting a vertex which is already present,
both of which were previously disallowed. It is not
clear from the documentation whether these should be
allowed or not. I am not claiming that these additional
changes are necessarily wrong, but API changes like
this need to be done intentionally, and not as an
inadvertent side-effect of other changes.
In Christ,
Steven Watanabe
|
|
I'll review it when I get the current builds to stop failing. Thank you for bringing it to my attention. |
|
No more undermining will be forthcoming. John, I fixed the g++ 4.6 issue with Boost.Range, and the results here will show up at https://travis-ci.org/boostorg/graph/builds/435122722, when Travis gets around to it. The branch is In addition, I've added an
Since |
Merged, thanks.
Ugh, lots of failures - looks like all the same failure and that the library plays fast and loose with some typecasts?
Good catch - I would tend to vote for a #if guard as the most conservative option, but don't have a strong view.
I'm sure that's not the intention at all. I realise this is all getting way more complex than it first appeared, but unfortunately when a library isn't maintained for a while it can take a while to bash things into a shape where substantive patches can even be considered. Once everyone is confident the testing regime is sound, then patches like this become much easier to evaluate. That just leaves the change in semantics in #80 highlighted by @swatanabe - let me see if I can produce a test case so we can all decide what the right thing to do is. |
|
OK, I'm going to write out what I think is happening here and you guys can all tell me I'm wrong :)
|
False positives caused by the hidden visibility. I'll try to patch these up. I'm trying to convince the visibility experts that visibility should propagate, so that we can just say |
|
The integer overflow in floyd_warshall_test is not a false positive caused by hidden visibility though. :-) |
|
Can some of these easier ones be left to me? I'm trying to learn more
about this.
…On Sun, Sep 30, 2018, 09:00 Peter Dimov ***@***.***> wrote:
The integer overflow in floyd_warshall_test is not a false positive caused
by hidden visibility though. :-)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#114 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AC-CBSvmKdmnvsgnm_U4dEYWCZKnQxxwks5ugMBVgaJpZM4WWD51>
.
|
|
@jzmaddock Thinking on the subgraph stuff more, I think it tends to work like sets and subsets. So a set always contains the items in it's subsets, but the converse is not true. So then, you can add items to a subset and transitively in the larger set. New vertexes can be added to the graph but are not added to a subgraph by such an insertion, but adding a new vertex to a subgraph adds it to the graph. This is the only variation from what you're saying. I'm not confident what the implementation intends, though. @pdimov What about adding other sanitizers? Could add the following: |
|
Graph would benefit from |
|
@pdimov What are you running into with |
|
There were false positives caused by |
Yes that's pretty much it, but we have 2 overloads of add_vertex: Adds a new vertex to the subgraph and all of it's parents, and then the one that we're changing: Takes an existing vertex from the root graph, and adds it to subgraph |
|
Live results with I had to disable LeakSanitizer because it kept encountering a fatal error: https://travis-ci.org/boostorg/graph/jobs/435286728. |
|
AMDG
On 09/30/2018 10:15 AM, jzmaddock wrote:
<snip>
```
vertex_descriptor
add_vertex(vertex_descriptor u_global, subgraph& g);
```
Takes an existing vertex from the root graph, and adds it to subgraph `g`. Logically it makes no sense to call this for the root graph because it's a precondition that `u_global` is in that graph already.
Another way of expressing this is:
- Pre: The vertex must be present in the root graph.
- Post: The vertex is present in the subgraph.
vs.
- Pre: The vertex must be present in the root graph, but not in g.
- Post: The vertex was added to the subgraph
The original code seems to follow the latter, while
the new code obeys the former. I'm fine with this
change, provided /the documentation is clarified./
Simpler is better.
In Christ,
Steven Watanabe
|
Although I appreciate anyone making an effort, I agree with Peter and really discourage this approach to merging multiple PRs in one go. The primary issue is the conflation of fixes into a single merge, which doesn't allow for reasoning, or changing our mind, about each change independently. The secondary issue is that it might seem expedient to the person that can push to this branch, but, what about all the contributors that opened the original PRs? As far as I could tell, the real blocker to progress was the absence of a maintainer to review and merge the extant PRs, not the absence of one more PR. |
That's my fault/suggestion really - the issue is that the library had no CI set up and working - I've fixed that now, but I believe there is no way we can trigger CI runs on old PR's (that pre-date the CI additions) so there's no benchmark for us to judge them by. There's also no way for us to push to these branches are they're owned by the original submitter.... we can ask for the original submitter to make changes, but if they're trivial it's often easier to just start a new branch and PR for integration testing. Please prove me wrong on the above - nothing would delight me more ;)
Yup, and I think this one is about ready - I just need a bit of time to double check. |
|
So do I just close this, then? |
Try to close and reopen the PRs. That MAY trigger a CI run. |
|
It will, but it's better to ask their authors to rebase against the current develop. |
Isn't that unnecessary unless there is a merge conflict (in which case the CI tests won't be run anyway)? |
|
I think that pull requests that have been created at a time there was no CI will not be CI-tested, no matter how many times we reopen them. :-) |
|
But I could be wrong about this. |
You are - it worked on the one I just tried :) |
|
Merged to develop. I've also re-instated the removed assert as per @swatanabe comment. |
|
@jzmaddock Holy inbox batman! I will ping you for small stuff from now on. Suddenly all the graph. |
|
I hope this works out as much as anyone, and I thank @anadon for their effort, but if something is mysteriously wrong and requires reversion of this merge and going back to square one, I will say "I told you so". :) |
|
@jeremy-murphy I know... |
Added PR's #80, #93, #95, #111 These are well formed bugfix PR's which should be added. All tests are passing locally, but I don't have the facilities to test more broadly. The broader test facilities would be a future feature addition and out of scope of what I've been immediately tasked with.