Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / Bugs20041109.adoc
1 Bugs20041109
2 ============
3
4 Here are the known bugs in <:Release20041109:MLton 20041109>, listed
5 in reverse chronological order of date reported.
6
7 * <!Anchor(bug17)>
8 `MLton.Finalizable.touch` doesn't necessarily keep values alive
9 long enough. Our SVN has a patch to the compiler. You must rebuild
10 the compiler in order for the patch to take effect.
11 +
12 Thanks to Florian Weimer for reporting this bug.
13
14 * <!Anchor(bug16)>
15 A bug in an optimization pass may incorrectly transform a program
16 to flatten ref cells into their containing data structure, yielding a
17 type-error in the transformed program. Our CVS has a
18 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/mlton/ssa/ref-flatten.fun.diff?r1=1.35&r2=1.37[patch]
19 to the compiler. You must rebuild the compiler in order for the
20 patch to take effect.
21 +
22 Thanks to <:VesaKarvonen:> for reporting this bug.
23
24 * <!Anchor(bug15)>
25 A bug in the front end mistakenly allows unary constructors to be
26 used without an argument in patterns. For example, the following
27 program is accepted, and triggers a large internal error.
28 +
29 [source,sml]
30 ----
31 fun f x = case x of SOME => true | _ => false
32 ----
33 +
34 We have fixed the problem in our CVS.
35 +
36 Thanks to William Lovas for reporting this bug.
37
38 * <!Anchor(bug14)>
39 A bug in `Posix.IO.{getlk,setlk,setlkw}` causes a link-time error:
40 `undefined reference to Posix_IO_FLock_typ`
41 Our CVS has a
42 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/basis-library/posix/primitive.sml.diff?r1=1.34&r2=1.35[patch]
43 to the Basis Library implementation.
44 +
45 Thanks to Adam Chlipala for reporting this bug.
46
47 * <!Anchor(bug13)>
48 A bug can cause programs compiled with `-profile alloc` to
49 segfault. Our CVS has a
50 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/mlton/backend/ssa-to-rssa.fun.diff?r1=1.106&r2=1.107[patch]
51 to the compiler. You must rebuild the compiler in order for the
52 patch to take effect.
53 +
54 Thanks to John Reppy for reporting this bug.
55
56 * <!Anchor(bug12)>
57 A bug in an optimization pass may incorrectly flatten ref cells
58 into their containing data structure, breaking the sharing between
59 the cells. Our CVS has a
60 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/mlton/ssa/ref-flatten.fun.diff?r1=1.32&r2=1.33[patch]
61 to the compiler. You must rebuild the compiler in order for the
62 patch to take effect.
63 +
64 Thanks to Paul Govereau for reporting this bug.
65
66 * <!Anchor(bug11)>
67 Some arrays or vectors, such as `(char * char) vector`, are
68 incorrectly implemented, and will conflate the first and second
69 components of each element. Our CVS has a
70 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/mlton/backend/packed-representation.fun.diff?r1=1.32&r2=1.33[patch]
71 to the compiler. You must rebuild the compiler in order for the
72 patch to take effect.
73 +
74 Thanks to Scott Cruzen for reporting this bug.
75
76 * <!Anchor(bug10)>
77 `Socket.Ctl.getLINGER` and `Socket.Ctl.setLINGER`
78 mistakenly raise `Subscript`.
79 Our CVS has a
80 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/basis-library/net/socket.sml.diff?r1=1.14&r2=1.15[patch]
81 to the Basis Library implementation.
82 +
83 Thanks to Ray Racine for reporting the bug.
84
85 * <!Anchor(bug09)>
86 <:ConcurrentML: CML> `Mailbox.send` makes a call in the wrong atomic context.
87 Our CVS has a http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/lib/cml/core-cml/mailbox.sml.diff?r1=1.3&r2=1.4[patch]
88 to the CML implementation.
89
90 * <!Anchor(bug08)>
91 `OS.Path.joinDirFile` and `OS.Path.toString` did not
92 raise `InvalidArc` when they were supposed to. They now do.
93 Our CVS has a http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/basis-library/system/path.sml.diff?r1=1.8&r2=1.11[patch]
94 to the Basis Library implementation.
95 +
96 Thanks to Andreas Rossberg for reporting the bug.
97
98 * <!Anchor(bug07)>
99 The front end incorrectly disallows sequences of expressions
100 (separated by semicolons) after a topdec has already been processed.
101 For example, the following is incorrectly rejected.
102 +
103 [source,sml]
104 ----
105 val x = 0;
106 ignore x;
107 ignore x;
108 ----
109 +
110 We have fixed the problem in our CVS.
111 +
112 Thanks to Andreas Rossberg for reporting the bug.
113
114 * <!Anchor(bug06)>
115 The front end incorrectly disallows expansive `val`
116 declarations that bind a type variable that doesn't occur in the
117 type of the value being bound. For example, the following is
118 incorrectly rejected.
119 +
120 [source,sml]
121 ----
122 val 'a x = let exception E of 'a in () end
123 ----
124 +
125 We have fixed the problem in our CVS.
126 +
127 Thanks to Andreas Rossberg for reporting this bug.
128
129 * <!Anchor(bug05)>
130 The x86 codegen fails to account for the possibility that a 64-bit
131 move could interfere with itself (as simulated by 32-bit moves). We
132 have fixed the problem in our CVS.
133 +
134 Thanks to Scott Cruzen for reporting this bug.
135
136 * <!Anchor(bug04)>
137 `NetHostDB.scan` and `NetHostDB.fromString` incorrectly
138 raise an exception on internet addresses whose last component is a
139 zero, e.g `0.0.0.0`. Our CVS has a
140 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/basis-library/net/net-host-db.sml.diff?r1=1.12&r2=1.13[patch] to the Basis Library implementation.
141 +
142 Thanks to Scott Cruzen for reporting this bug.
143
144 * <!Anchor(bug03)>
145 `StreamIO.inputLine` has an off-by-one error causing it to drop
146 the first character after a newline in some situations. Our CVS has a
147 http://mlton.org/cgi-bin/viewcvs.cgi/mlton/mlton/basis-library/io/stream-io.fun.diff?r1=text&tr1=1.29&r2=text&tr2=1.30&diff_format=h[patch].
148 to the Basis Library implementation.
149 +
150 Thanks to Scott Cruzen for reporting this bug.
151
152 * <!Anchor(bug02)>
153 `BinIO.getInstream` and `TextIO.getInstream` are
154 implemented incorrectly. This also impacts the behavior of
155 `BinIO.scanStream` and `TextIO.scanStream`. If you (directly
156 or indirectly) realize a `TextIO.StreamIO.instream` and do not
157 (directly or indirectly) call `TextIO.setInstream` with a derived
158 stream, you may lose input data. We have fixed the problem in our
159 CVS.
160 +
161 Thanks to <:WesleyTerpstra:> for reporting this bug.
162
163 * <!Anchor(bug01)>
164 `Posix.ProcEnv.setpgid` doesn't work. If you compile a program
165 that uses it, you will get a link time error
166 +
167 ----
168 undefined reference to `Posix_ProcEnv_setpgid'
169 ----
170 +
171 The bug is due to `Posix_ProcEnv_setpgid` being omitted from the
172 MLton runtime. We fixed the problem in our CVS by adding the
173 following definition to `runtime/Posix/ProcEnv/ProcEnv.c`
174 +
175 [source,c]
176 ----
177 Int Posix_ProcEnv_setpgid (Pid p, Gid g) {
178 return setpgid (p, g);
179 }
180 ----
181 +
182 Thanks to Tom Murphy for reporting this bug.