Muahaha non ce n’est pas sale!

August 24th, 2005 par gab

tu es comme les fleurs du jardin magique ma petite, ton corps change…

malgré son appellation barbare et sa description aux allures sales, voila un bidule tout plein de coma pour te gacher ta journée de sub-productivité allongé dans un transat du jardin, j’ai nommé un bidule équivalent à RUNDLL32 (ndlr: ça vient d’un OS pas clean) pour menelusme, pour faire plein de trucs poilus avec des .so depuis ton shell convivial.

le coupable
Source: l’indic

Update

Dek\ est beau, dek\ est grand. Dek\ nous propose ce patch convivial qui permet à cette petite perle de fonctionner sous FreeBSD. Et en prime, un peu d’explications de l’interessé :

[dek\] Dans la runlib, il mprotect une page
[dek\] Pour savoir si la valeur retournée par la
fontion du .so executée
[dek\] Est une adresse mémoire valide
[dek\] Sauf que sous linux, ça retourne -1 dans ce cas
mprotect
[dek\] Sous BSD, ça ne retourne -1 que si l’adresse
n’est pas alignée
[dek\] Donc il s’agissait de trouver une fonction qui
check qu’une adresse est valide
[dek\] Donc j’avais 4298945834958 solutions de merde
[dek\] Et j’ai parlé à mayhem/dvorak de ce soucis, pour
leur demander leur avis
[dek\] dvorak m’a dit “write returns EFAULT in case of error”
[dek\] Et c’est vrai, c’est pas con, les syscall ne
peuvent pas segfault
[dek\] Donc tous ceux qui acceptent une adresse
[dek\] Sont obligées de checker qu’elles est valide
[dek\] Et retournent EFAULT en cas d’erreur
[dek\] Donc j’utilise open() moi.


C’EST PAS DLA MERDE CA MADAME

Posté dans Muahaha | 9 Comments »

9 Reponses pour “non ce n’est pas sale!”

  1. dek Says:

    Hop
    Comme autre solution, il y avait mincore(2), si la page n’est pas swappée.

    Sinon, je n’ai pas réussi à faire fonctionner write sur /dev/null. write(2) retournait toujours “count” en valeur de retour, même si l’adresse est invalide. En revanche, write(2) sur stdin/stdout/stderr retourne bien -1 si l’adresse est invalide. Des idées ?

  2. gab Says:

    write
    le souci c’est que stdin/stdout/stderr peuvent etre fermés si c’est un daemon (et donc risque de se chopper un EBADF avant le EFAULT)

    il y a fort longtemps j’utilisais ça:

    int tptr(void *ptr)
    {
    return ((access((char *)ptr, 0) == -1) && (errno == EFAULT)) ? -1 : 0;
    }

  3. gab Says:

    /dev/null
    dans /usr/src/linux/drivers/char/mem.c:

    static ssize_t write_null(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
    {
    return count;
    }

    un peu plus loin:

    static struct file_operations null_fops = {
    .llseek = null_lseek,
    .read = read_null,
    .write = write_null,
    };

    Mélémentaire mon Mher Matson…

  4. Anonyme Says:

    hop
    Patch modifié pour prendre en compte le access() de gab : beaucoup plus léger qu’un open et n’oblige pas à inclure des headers manquant.

  5. oliv3 Says:

    c’est beau
    et ça me fait penser à tous nos AMIS qui disent que “ça ne marchera jamais vos trucs open-source” :)

  6. iMil Says:

    Re: c’est beau
    “vos trucs d’étudiants la.. c’est sympa pour s’amuser mais ca percera jamais dans le milieu professionel, IL FAUT VOUS REVEILLER MONSIEUR XXXX ON EST PLUS EN 1968 !”.

    Toute ressemblance avec des faits ayant existé serait purement fortuite.

    iMil_1996

  7. Anonyme Says:

    Parce que nous le valons bien
    douche de “oil of codaze” pour tous :)

  8. oliv3 Says:

    update
    ça ne remplacera jamais X25

  9. Anonyme Says:

    vous vivez dans des combis volkswagen!
    bande de sales jeunes pouilleux! bons à rien! feignants!

Répondre

Vous devez être identifié pour poster un commentaire.

Identification

Enregistrez-vous

SQUAD!

GCU live

[04:59:00] gaston merci CMoi :)
[04:59:07] koollman arapaho: je confirmes. j'ai monté un cluster de 4 machines pour tuer un haproxy ... et j'ai encore du faire de l'optimisation sur les machines pour commencer a taper les limites :)
[04:59:19] koollman (test de charge avec tsung)
--> nicoo joined #gcu.
[05:03:48] olasd bon, pour la rolling update du cluster elasticsearch, passer en discovery unicast au lieu de multicast ça évite les hoquets
[05:04:00] olasd </j'ai testé pour vous>
<-- bingoo left irc: Remote host closed the connection
<-- semarie left irc: Remote host closed the connection
<-- nicoo left irc: Write error: Broken pipe
--> nicoo joined #gcu.
--> bingoo joined #gcu.

Miiissioudaaam'

Archives:

Meta:

Hosted by:

NBS-System