[Issue 14610] New: 'null this' assertion missing in 2.067

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14610

  Issue ID: 14610
   Summary: 'null this' assertion missing in 2.067
   Product: D
   Version: D2
  Hardware: x86_64
OS: All
Status: NEW
  Severity: major
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: tomerfil...@gmail.com

Consider the following code:

==
struct S {
void foo() {}
}

void main() {
S* s = null;
s.foo();
}
==

It used to crash with null this, e.g., 

core.exception.AssertError@main.d(2): null this

but as of 2.067 it crashes with 

core.exception.AssertError@source/main.d(0): Assertion failure

So first of all, the message is undescriptive, and second, the line number is
0, which is very weird.

--


[Issue 6607] critical_.d and critical.c use double check locking the wrong way

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6607

Martin Nowak c...@dawg.eu changed:

   What|Removed |Added

 CC||c...@dawg.eu

--- Comment #3 from Martin Nowak c...@dawg.eu ---
How ludicrous to have a known race condition in synchronized and not fixing it
for 3 years.

--


[Issue 14607] dmd crashes intermittently when building in 32 bit mode

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14607

--- Comment #3 from Sobirari Muhomori dfj1es...@sneakemail.com ---
https://github.com/andralex/phobos/blob/allocator/std/experimental/allocator/affix_allocator.d
- maybe this?

--


[Issue 14573] [REG2.067] Extreme memory usage when `synchronized( object )` is used

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14573

github-bugzi...@puremagic.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--


[Issue 6607] critical_.d and critical.c use double check locking the wrong way

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6607

--- Comment #4 from github-bugzi...@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/druntime

https://github.com/D-Programming-Language/druntime/commit/0b41a6205361382930272813a5f6a2baae0c456a
cleanup and rewrite rt.critical_

- reuse mutex declarations from rt.monitor_
- fix race condition (incorrect double checked locking)
- modernize code for readability
- use shared(D_CRITICAL_SECTION)* when dealing with
  unsynchronized data
- replace STI/STD style C constructors
- fix Issue 6607
- hopefully fix Issue 14584 - spurious autotester deadlocks

--


[Issue 14611] New: socket.localAddress fails on Unix Sockets with longer Path ( 13 characters)

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14611

  Issue ID: 14611
   Summary: socket.localAddress fails on Unix Sockets with longer
Path ( 13 characters)
   Product: D
   Version: D2
  Hardware: x86_64
OS: Linux
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: Phobos
  Assignee: nob...@puremagic.com
  Reporter: dragosc...@gmail.com

import std.file;
import std.stdio;
import std.socket;

void main()
{
string unixSocketNameOk = 1234567890123;
auto sOk = new Socket(AddressFamily.UNIX, SocketType.STREAM);

sOk.bind(new UnixAddress(unixSocketNameOk));
scope (exit) remove(unixSocketNameOk);

writeln(sOk.localAddress);

string unixSocketNameFail = 12345678901234;
auto sFail = new Socket(AddressFamily.UNIX, SocketType.STREAM);

sFail.bind(new UnixAddress(unixSocketNameFail));
scope (exit) remove(unixSocketNameFail);

writeln(sFail.localAddress);
}

Output:
 localhost:1234567890123
 std.socket.SocketParameterException@std/socket.d(2894): Not enough socket 
 address storage

--


[Issue 6607] critical_.d and critical.c use double check locking the wrong way

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6607

github-bugzi...@puremagic.com changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--


[Issue 14573] [REG2.067] Extreme memory usage when `synchronized( object )` is used

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14573

--- Comment #9 from github-bugzi...@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/druntime

https://github.com/D-Programming-Language/druntime/commit/d50aba0083b03659f60c3f157a674d9846d8228f
fix Issue 14573 - classes without destructor leak monitor/mutex

- set finalize bit when constructing the monitor

--


[Issue 14611] socket.localAddress fails on Unix sockets with longer path ( 13 characters)

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14611

Dragos Carp dragosc...@gmail.com changed:

   What|Removed |Added

Summary|socket.localAddress fails   |socket.localAddress fails
   |on Unix Sockets with longer |on Unix sockets with longer
   |Path ( 13 characters)  |path ( 13 characters)

--


[Issue 14611] socket.localAddress fails on Unix Sockets with longer Path ( 13 characters)

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14611

Dragos Carp dragosc...@gmail.com changed:

   What|Removed |Added

   Severity|enhancement |normal

--


[Issue 14612] New: typeid(interface) returns TypeInfo_Class object

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14612

  Issue ID: 14612
   Summary: typeid(interface) returns TypeInfo_Class object
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: k.hara...@gmail.com

In the following test code, typeid(i) does not return typeid(J) typed
TypeInfo_Interface, rather it returns typeid(J).info that is TypeInfo_Class.

import std.stdio;

interface I {}
interface J : I {}
class C : J {}
class D : C {}

void main()
{
D d = new D();
Object o = cast(Object)d;
I i = cast(I)d;

writeln(typeid(d) is typeid(D));// true
writeln(typeid(o) is typeid(D));// true
writeln(typeid(i) is typeid(I));// false ?
writeln(typeid(i) is typeid(J));// false ?
writeln(typeid(i) is typeid(D));// false ?
writeln(typeid(i));  // prints 'test.J' !?

// old exp.classinfo property is same with typeid(exp)
writeln(d.classinfo is typeid(D));  // true
writeln(o.classinfo is typeid(D));  // true
writeln(i.classinfo is typeid(J));  // false, same with typeid()
writeln(i.classinfo is typeid(I));  // false, same with typeid()
writeln(i.classinfo is typeid(D));  // false, same with typeid()

writeln(  typeid(i) is typeid(J).info); // true
writeln(i.classinfo is typeid(J).info); // true
}



This nonintuitive behavior comes historically from D1.

In D1, ClassInfo, TypeInfo_Class, and TypeInfo_Interface are different classes.
In there, ClassInfo
had had the information of class *and* interface definition in runtime, and two
TypeInfo-s were purely
identity objects that associated with the class/interface types.

In D2, ClassInfo and TypeInfo_Class were merged into one (by issue 3380 ?).
Now ClassInfo is an alias name of TypeInfo_Class.
But, the separation between ClassInfo and TypeInfo_Interface is still there.

And currently, typeid(i) is completely same with i.classinfo, therefore it
still returns ClassInfo == TypeInfo_Class.

-

I think there's two ways to fix the behavior.

1. To make TypeInfo_Interface accessible from runtime interface references. To
do that,
change object.Interface struct as follows:

struct Interface
{
  version(none) // old
  {
TypeInfo_Class   classinfo;
  }
  else  // new
  {
TypeInfo_Interface tinfo;
@property TypeInfo_Class classinfo() { return tinfo.info; }
  }
void*[] vtbl;
size_t  offset;
}

and then the interface vtb[0] will be the runtime TypeInfo_Interface that we
needing.

Pros: We need very little compiler and druntime changes.
Cons: It would add a small runtime cost in the dynamic cast.
See: druntime/src/rt/cast_.d

2. Separate ClassInfo from TypeInfo_Class again and define TypeInfo hierarchy
as follows:

abstract class ClassInfo : TypeInfo { ... }
class TypeInfo_Class : ClassInfo { ... }
class TypeInfo_Interface : ClassInfo { ... }

Pros: By handling ClassInfo, the runtime cost in dynamic cast operation can be
kept same with today's.
Cons: If an user still using the name 'ClassInfo', the code behavior will be
changed.

--


[Issue 14609] [REG2.068a] Github HEAD: DMD assertion failure for valid code

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14609

--- Comment #2 from github-bugzi...@puremagic.com ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/6e0a27b19219d1c2cd02fb3319d3e3a9bfabfcd7
fix Issue 14609 - Github HEAD: DMD assertion failure for valid code

https://github.com/D-Programming-Language/dmd/commit/ba848af87cbba093ba9947e27090b9ef220f0334
Merge pull request #4672 from 9rnsr/fix14609

[REG2.068a] Issue 14609 - Github HEAD: DMD assertion failure for valid code

--


[Issue 11738] partialShuffle actually shuffles the entire input

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=11738

--- Comment #4 from Ivan Kazmenko ga...@mail.ru ---
(In reply to Joseph Rushton Wakeling from comment #3)
 (In reply to Ivan Kazmenko from comment #2)
  Disclaimer: I may have misunderstood the issue, in which case, please
  explain what is the intent here.
 
 At first glance, I reckon it's my screw-up misinterpreting the
 documentation.  Sorry about that. :-(
 
 I'm not sure how much time I have in the near future, but I don't object to
 the original patch being reverted.

I can submit a PR for that ~tomorrow if you want, seems trivial: change one
line of actual code and a few unittests.

--


[Issue 11738] partialShuffle actually shuffles the entire input

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=11738

--- Comment #3 from Joseph Rushton Wakeling joseph.wakel...@webdrake.net ---
(In reply to Ivan Kazmenko from comment #2)
 Disclaimer: I may have misunderstood the issue, in which case, please
 explain what is the intent here.

At first glance, I reckon it's my screw-up misinterpreting the documentation. 
Sorry about that. :-(

I'm not sure how much time I have in the near future, but I don't object to the
original patch being reverted.

--


[Issue 11738] partialShuffle actually shuffles the entire input

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=11738

--- Comment #5 from Joseph Rushton Wakeling joseph.wakel...@webdrake.net ---
(In reply to Ivan Kazmenko from comment #4)
 I can submit a PR for that ~tomorrow if you want, seems trivial: change one
 line of actual code and a few unittests.

Sounds great, thank you :-)

--


[Issue 7044] Missing a way to control the order of arguments passed to the linker makes impossible to link some programs

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=7044

--- Comment #39 from Walter Bright bugzi...@digitalmars.com ---
Here's my evil plan:

Add a switch -confsection=sectionname which will cause [sectionname] in the
config file to be parsed. There can be multiple such switches and sections, 
they'll be parsed in lexical order.

Note that:

DFLAGS += string

can be handled without adding new features with:

DFLAGS = %DFLAGS% string

The current way the config file is read twice wreaks havoc with the order in
which sections are processed and things like appending to existing environment
variables. This all has to be redone, but I'd like a green light on it being an
acceptable resolution of this bugzilla issue before investing the effort.

(Currently order of evaluation is undocumented.)

I decided not to have -version=identifier do this, because inevitably someone
will have a problem with it and want another switch to be able to do them
independently.

Calling it -confsection will place it next to the -conf switch in the
documentation, making the connection easily discoverable.

--


[Issue 14609] Github HEAD: DMD assertion failure for valid code

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14609

Kenji Hara k.hara...@gmail.com changed:

   What|Removed |Added

   Keywords||pull, rejects-valid
   Hardware|x86_64  |All
 OS|Linux   |All

--- Comment #1 from Kenji Hara k.hara...@gmail.com ---
https://github.com/D-Programming-Language/dmd/pull/4672

--


[Issue 14609] [REG2.068a] Github HEAD: DMD assertion failure for valid code

2015-05-20 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14609

Kenji Hara k.hara...@gmail.com changed:

   What|Removed |Added

Summary|Github HEAD: DMD assertion  |[REG2.068a] Github HEAD:
   |failure for valid code  |DMD assertion failure for
   ||valid code

--