Undefined behaviour when calling ioctl() multiple times
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- java
- Bereich
- operating-systems
Rechercherichtung
Beginne mit der LibC-Schnittstelle und der im Issue reproduzierten getWindowSize(), und führe dann die Schleife auf dem genannten macOS-, Apple-M1- und GraalVM-Setup aus. Untersuche, wie das winsize-Argument bei wiederholten ioctl()-Aufrufen durch JNA dargestellt und weitergereicht wird. Als erledigt gilt die Aufgabe, wenn wiederholte Aufrufe keine Fehler mehr zurückgeben oder mit SIGSEGV, illegalen Instruktionen oder Heap-Korruption terminieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
JNA version: 5.15.0
JVM: GraalVM CE 17.0.9+9.1 (build 17.0.9+9-jvmci-23.0-b22)
OS: macOS 14.7
CPU: Apple M1 (64-bit)
public interface LibC extends Library {
LibC libC = Native.load("c", LibC.class);
int TIOCGWINSZ = 0x40087468; // this is definitely correct, I've checked it with C
int ioctl(int fd, int request, winsize winsize);
}
public static int getWindowSize() {
val ttysize = new winsize();
val returnCode = libC.ioctl(0, TIOCGWINSZ, ttysize);
if (returnCode != 0) {
throw new RuntimeException("There was a problem calling ioctl(): " + returnCode);
}
return ttysize.ws_col;
}
for (int i = 0; i < 100; i++) {
System.out.println(getWindowSize());
}
running this code results in either:
- ioctl() returning -1
- SIGSEGV
- Illegal instruction: 4
- Heap corruption detected
- Vorherrschende Sprache
- Java
- Sterne
- 8.9k
- Forks
- 1.7k
- Ø Merge
- 1 T. 13 Std.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus java-native-access/jna
-
MacFileUtils: FSPathMakeRef passes an int where the C function takes its FSRef output pointerEvtl. vergeben @VelpulaGangavardhan hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 79/100
java-native-access/jna#1746 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
java-native-access/jna#1745 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
java-native-access/jna#1747 · 1 Kommentar ·
-
`Native.typeOptions` never releases library interfaces, leaking classloadersEvtl. vergeben @curforever hat das vor 16 Tagen übernommen. Offen
Schwierigkeit 4/5 1-2 Tage Anfängerfreundlichkeit 48/100
java-native-access/jna#1742 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 66/100
java-native-access/jna#1738 ·
Alle Issues in java-native-access/jna
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
quarkiverse/quarkus-google-cloud-services#1188 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Component: Frontend Component: Web Component Type: Maintenance
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
it-at-m/refarch-templates#1944 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
priority: p2 type: bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
googleapis/java-genai#1372 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 60/100