|
|
@@ -1,7 +1,6 @@
|
|
1
|
1
|
# hw8 - Simulation 1 - Antworten
|
|
2
|
2
|
|
|
3
|
3
|
1. Helgrind markiert die richtigen Stellen im Code:
|
|
4
|
|
-
|
|
5
|
4
|
```text
|
|
6
|
5
|
==1930== Possible data race during write of size 4 at 0x60207C by thread #1
|
|
7
|
6
|
==1930== Locks held: none
|
|
|
@@ -11,16 +10,23 @@
|
|
11
|
10
|
==1930== Locks held: none
|
|
12
|
11
|
==1930== at 0x400C5A: worker (main-race.c:8)
|
|
13
|
12
|
```
|
|
|
13
|
+ Weiterhin erhält man die Information über den Lock (hier `none`), die Art des Problems (`Possible data race`) und die Größe der Daten, die geschrieben werden.
|
|
14
|
14
|
|
|
15
|
|
-2. Blah
|
|
|
15
|
+2. Codekorrektur
|
|
16
|
16
|
|
|
17
|
|
- 1.
|
|
|
17
|
+ 1. Wenn ich eine der Zeilen lösche (bzw. auskommentiere), meldet helgrind keinen Fehler mehr (auch nicht für die zweite betreffende Zeile).
|
|
18
|
18
|
|
|
19
|
|
- 2.
|
|
20
|
|
-
|
|
21
|
|
- 3.
|
|
22
|
|
-
|
|
23
|
|
- 4.
|
|
|
19
|
+ 2. Wenn man nur bei einer Variable den Lock setzt, erkennt helgrind den Fehler:
|
|
|
20
|
+ ```text
|
|
|
21
|
+ ==18432== Possible data race during write of size 4 at 0x602084 by thread #1
|
|
|
22
|
+ ==18432== Locks held: none
|
|
|
23
|
+ ==18432== at 0x400CB2: main (main-race.c:18)
|
|
|
24
|
+ ==18432==
|
|
|
25
|
+ ==18432== This conflicts with a previous write of size 4 by thread #2
|
|
|
26
|
+ ==18432== Locks held: 1, at address 0x6020A0
|
|
|
27
|
+ ==18432== at 0x400C68: worker (main-race.c:10)
|
|
|
28
|
+ ```
|
|
|
29
|
+ 3. Wenn man bei beiden Variablen einen Lock setzt, findet helgrind wieder keine Fehler.
|
|
24
|
30
|
|
|
25
|
31
|
3.
|
|
26
|
32
|
|