I had a quick look at the SFML code (kudos on the standard by the way, very clean!) but I couldn't see anything strange happening.
I have a call to sf::Shape::Circle that returns a Shape by value. The shape contains the std::vector with all the points, which is copied with its operator=. The problem lies with the call to deallocate() which seems to trigger my operator delete. This is because I have the following code:
class A {
A();
sf::Shape s;
};
A() {
s = sf::Shape::Circle( ... );
}
The deallocate on the std::vector inside sf::Shape is called on s, since the operator= from above will have to delete the old vector which contains the point added to sf::Shape in its constructor (representing the center of the shape). The only thing I can think of is that the sf::Shape constructor is called before my operator new is linked into the translation unit, but that doesn't make sense.