  WebAssembly (Wasm) is a binary instruction format designed for secure and
efficient execution within sandboxed environments -- predominantly web apps and
browsers -- to facilitate performance, security, and flexibility of web
programming languages. In recent years, Wasm has gained significant attention
from the academic research community and industrial development projects to
engineer high-performance web applications. Despite the offered benefits,
developers encounter a multitude of issues rooted in Wasm (e.g., faults,
errors, failures) and are often unaware of their root causes that impact the
development of web applications. To this end, we conducted an empirical study
that mines and documents practitioners' knowledge expressed as 385 issues from
12 open-source Wasm projects deployed on GitHub and 354 question-answer posts
via Stack Overflow. Overall, we identified 120 types of issues, which were
categorized into 19 subcategories and 9 categories to create a taxonomical
classification of issues encountered in Wasm-based applications. Furthermore,
root cause analysis of the issues helped us identify 278 types of causes, which
have been categorized into 29 subcategories and 10 categories as a taxonomy of
causes. Our study led to first-of-its-kind taxonomies of the issues faced by
developers and their underlying causes in Wasm-based applications. The
issue-cause taxonomies -- identified from GitHub and SO, offering empirically
derived guidelines -- can guide researchers and practitioners to design,
develop, and refactor Wasm-based applications.
